我希望通过AWS Amplify创建一个API,以便可以从React 和 React Native查询/发布。我通过无服务器设置API和Lambda,并通过Cognito控制台手动设置用户池,每个平台有两个单独的应用程序客户端。 React设置进展顺利,所有对API的获取/发布/输入均按预期工作。
事实证明,React-Native多毛。我手动将Amplify配置为与React项目中的值相同,除了iphlpapi.lib
之外,以匹配Cognito用户池中的应用程序客户端。
Auth调用(SignIn,SignUp)都可以正常工作,因此配置至少可以正常进行。但是,在React中完美工作的REST API调用会以本机APP_CLIENT_ID
中的403响应。 (相同的用户)。我翻阅文档,发现可能需要在本机配置中使用Missing Authentication Token
:
custom_header
这清除了Amplify.configure({
API: {
endpoints: [
{
name: 'testapi',
endpoint: config.apiGateway.URL,
region: config.apiGateway.REGION,
custom_header: async () => {
return {
Authorization: (await Auth.currentSession()).idToken.jwtToken
};
}
}
]
}
});
错误,但是现在我得到了:
Missing Authentication Token
我通过Chrome控制台比较了全部请求,看起来React中的Authorization标头是通过Amplify正确生成的,包括Credential,Signature,SignedHeader等。它在本机中看起来与{{1} }上面的更改只是将Authorization标头设置为jwtToken。