Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 反应:AWS Cognito令牌端点在被Shopify商店重定向时返回400个无效的_授权_Reactjs_Amazon Web Services_Oauth_Amazon Cognito_Aws Amplify - Fatal编程技术网

Reactjs 反应:AWS Cognito令牌端点在被Shopify商店重定向时返回400个无效的_授权

Reactjs 反应:AWS Cognito令牌端点在被Shopify商店重定向时返回400个无效的_授权,reactjs,amazon-web-services,oauth,amazon-cognito,aws-amplify,Reactjs,Amazon Web Services,Oauth,Amazon Cognito,Aws Amplify,我们的React应用程序使用AWS Amplify和Cognito托管的UI进行身份验证。我们的应用程序中有一个链接Shopify商店的功能。为此,我们获取用户的Shopify商店URL,并将用户重定向到其管理面板以获取权限和访问令牌。在用户授予权限后,他将再次重定向到我们的应用程序 问题就发生在这一点上。当查看控制台时,我们会看到类似这样的内容Cognito令牌终结点抛出400个无效的\u授予错误。刷新页面时,此错误会消失,但我们认为应该有更好的解决方案。 有人能给我们提供一些关于如何克服这些

我们的React应用程序使用AWS Amplify和Cognito托管的UI进行身份验证。我们的应用程序中有一个链接Shopify商店的功能。为此,我们获取用户的Shopify商店URL,并将用户重定向到其管理面板以获取权限和访问令牌。在用户授予权限后,他将再次重定向到我们的应用程序

问题就发生在这一点上。当查看控制台时,我们会看到类似这样的内容Cognito令牌终结点抛出400个无效的\u授予错误。刷新页面时,此错误会消失,但我们认为应该有更好的解决方案。

有人能给我们提供一些关于如何克服这些认知错误的建议吗?非常感谢所有有用的建议

用户从Shopify商店重定向的页面如下所示

import React,{useffect}来自“React”;
从“aws放大”导入{Auth};
从“react-redux”导入{useSelector,useDispatch};
从“../../services/api”导入*作为api;
const shopifyauthorcallback=({history})=>{
const classes=useStyles();
const dispatch=usedpatch();
const organizationId=useSelector(
(状态)=>state.dashboard.userOrganizationId
);
useffect(()=>{
Auth.currentSession()
。然后((res)=>{
const params=新的URLSearchParams(window.location.search);
const shopOrigin=params.get(“shop”);
const authCode=params.get(“代码”);
应用程序编程接口
.post(`shopify/access token`{
authCode:authCode,
shopOrigin:shopOrigin,
organizationId:organizationId,
})
。然后((数据)=>{
历史。推送(“/”);
})
.catch((错误)=>{
控制台错误(error);
});
})
.catch((错误)=>{
console.log(错误);
});
});
返回(
重定向

); }; 导出默认ShopifyAuthCallback;
Amplify auth在
App.js
中设置如下

import React,{useffect,useState}来自“React”;
从“历史”导入{createBrowserHistory};
从“/theme”导入主题;
从“/Routes”导入路由;
从“aws放大反应”导入{withAuthenticator};
从“aws放大”导入放大,{Auth};
从“/aws导出”导入aws_导出;
从“react Router dom”导入{Router};
从“react redux”导入{useSelector};
从“react redux”导入{useDispatch};
从“服务/api”导入*作为api;
放大、配置(aws_导出);
Auth.configure();
const browserHistory=createBrowserHistory();
常量应用=()=>{
const dispatch=usedpatch();
useffect(()=>{
试一试{
Auth.currentSession()
.然后(cognitoUser=>{
const{idToken:{payload}}=cognitoUser
if(有效负载['custom:organization']){
//做点什么}
否则{
//做点别的
}
})
。然后(异步(res)=>{
//做点什么
})
.catch(错误=>{
控制台日志(err);
});
}捕获(e){
控制台日志(e);
}
}, []);
返回(
);
}
const signUpConfig={
标题:“创建新帐户”,
可怕的错误:是的,
defaultCountryCode:“1”,
注册字段:[
{
标签:“姓名”,
键:“名称”,
要求:正确,
显示顺序:1,
类型:“字符串”
},
{
标签:“密码”,
密钥:“密码”,
要求:正确,
显示顺序:2,
键入:“密码”
},
{
标签:“电子邮件”,
密钥:“用户名”,
要求:正确,
显示顺序:4,
类型:“字符串”
}
]
};
使用验证器导出默认值(应用程序{
注册配置
});
编辑:

这些是Cognito令牌端点的请求和响应细节

General:

Request URL: https://ogmo-dev.auth.eu-central-1.amazoncognito.com/oauth2/token
Request Method: POST
Status Code: 400 
Remote Address: 35.156.210.187:443
Referrer Policy: strict-origin-when-cross-origin

Response:

access-control-allow-credentials: true
access-control-allow-origin: https://dev.ogmo.xyz/
cache-control: no-cache, no-store, max-age=0, must-revalidate
content-type: application/json;charset=UTF-8
date: Sun, 25 Oct 2020 06:52:21 GMT
expires: 0
pragma: no-cache
server: Server
set-cookie: XSRF-TOKEN=<token_value>; Path=/; Secure; HttpOnly; SameSite=Lax
status: 400
strict-transport-security: max-age=31536000 ; includeSubDomains
vary: Origin
x-amz-cognito-request-id: b4cd564e-b0b1-42bf-a7a1-9361ce4db34d
x-application-context: application:prod:8443
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block

Request headers:

:authority: ogmo-dev.auth.eu-central-1.amazoncognito.com
:method: POST
:path: /oauth2/token
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
content-length: 147
content-type: application/x-www-form-urlencoded
origin: https://dev.ogmo.xyz
referer: https://dev.ogmo.xyz/
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: cross-site
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36

Form data:

grant_type: authorization_code
code: 91a86bdadbe488ae1cd5ec10343a3461
client_id: <client_id>
redirect_uri: https://dev.ogmo.xyz/
概述:
请求URL:https://ogmo-dev.auth.eu-central-1.amazoncognito.com/oauth2/token
申请方式:邮寄
状态代码:400
远程地址:35.156.210.187:443
推荐人政策:交叉来源时严格来源
答复:
访问控制允许凭据:true
访问控制允许来源:https://dev.ogmo.xyz/
缓存控制:无缓存,无存储,最大年龄=0,必须重新验证
内容类型:application/json;字符集=UTF-8
日期:2020年10月25日星期日06:52:21 GMT
过期日期:0
pragma:没有缓存
服务器:服务器
设置cookie:XSRF-TOKEN=;路径=/;保护HttpOnly;SameSite=Lax
现状:400
严格的交通安全:最大年龄为31536000岁;包含子域
变化:起源
x-amz-cognito-request-id:b4cd564e-b0b1-42bf-a7a1-9361ce4db34d
x-application-context:应用程序:产品:8443
x-content-type-options:nosniff
x帧选项:拒绝
x-xss-protection:1;模式=块
请求标头:
:权限:ogmo-dev.auth.eu-central-1.amazoncognito.com
:方法:邮寄
:路径:/oauth2/令牌
:scheme:https
接受:*/*
接受编码:gzip,deflate,br
接受语言:en-US,en;q=0.9
内容长度:147
内容类型:application/x-www-form-urlencoded
来源:https://dev.ogmo.xyz
推荐人:https://dev.ogmo.xyz/
sec fetch dest:空
秒取数模式:cors
sec获取站点:跨站点
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/86.0.4240.111 Safari/537.36
表格数据:
授权类型:授权代码
代码:91a86bdadbe488ae1cd5ec10343a3461
客户识别码:
重定向\u uri:https://dev.ogmo.xyz/

您是否可以包括来自网络工具的请求和响应?可能是某些安全功能阻止登录。@DipenShah感谢您的评论。根据您的请求,我使用网络面板上的请求和响应详细信息更新了问题。您能看一下吗?您能确认您正在为
code
client\u id
传递正确的值吗?我不知道为什么我感觉你在用一个值传递另一个值。如果我没有用一个值传递另一个值,它不应该完全起作用,但这是错误的