我找不到任何显示如何执行此操作的文档,因此我尽力弄明白(这不是常见的用例)吗?我已经设置了我的资源以使用IAM身份验证,设置CORS等。然后我部署了它,并下载了生成的SDK。
在客户端,我使用AWS.CognitoIdentityCredentials中的凭据和apigClientFactory.newClient。当我尝试发布到我的资源时,我收到403错误响应,没有正文。
响应标头包含:x-amz-ErrorType: UnrecognizedClientException
这个错误是否可能来自其他一些AWS服务(它们会像那样冒泡)?如果是这样,我怎么知道哪一个?还有什么可能导致错误?
我正在使用测试测试客户端的代码如下所示:
function onFacebookLogin(fbtoken) {
// get cognito credentials
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:abcd6789-1234-567a-b123-12ab34cd56ef',
Logins: {'graph.facebook.com': fbtoken}
});
AWS.config.credentials.get(function(err) {
if (err) {return console.error('Credentials error: ', err);}
/* I'm assuming that this is what I use for accessKey and secretKey */
var credentials = AWS.config.credentials;
apigClient = apigClientFactory.newClient({
accessKey: credentials.accessKeyId,
secretKey: credentials.secretAccessKey
});
});
}
答案 0 :(得分:9)
我认为可能发生的事情是你没有使用访问密钥和密钥设置sessionToken字段。您可以尝试将其设置为如下例所示,看看是否有效吗?
var client = apigClientFactory.newClient({ accessKey: ACCESS_KEY, secretKey: SECRET_KEY, sessionToken: SESSION_TOKEN });
This如果需要,上一个问题有更多详细信息。
答案 1 :(得分:1)
是的我认为sessionToken是必需的。
以下是使用cognito未经身份验证的身份的基本示例:https://github.com/rpgreen/aws-recipes/blob/master/app/index.html