gpt4 book ai didi

ios - 带有 iOS 的 Amazon Cognito : Access to Identity Forbidden

转载 作者:行者123 更新时间:2023-11-30 13:32:20 24 4
gpt4 key购买 nike

感谢您提前提供的帮助!

我在让 Amazon Cognito 正确存储/同步数据时遇到一些问题。

在 dataset.synchronize() 行(不将数据存储在 Cognito 中)上,我收到一个大的输出错误(ID 已加星号),例如:

AWSCredentialsProvider.m line:429 | __73-[AWSCognitoCredentialsProvider 
getCredentialsWithCognito:authenticated:]_block_invoke | GetCredentialsForIdentity
failed. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain
Code=10 "(null)" UserInfo={__type=NotAuthorizedException, message=Access to
Identity '*****' is forbidden.}]

cognitoID 不为零,并且正确返回(并且与我可以在线读取的值匹配)

例如,在通过 Facebook 进行身份验证后,我执行以下操作:

  if (FBSDKAccessToken.currentAccessToken() != nil)
{
let fbCognitoToken = FBSDKAccessToken.currentAccessToken().tokenString
credentialsProvider.logins = [AWSCognitoLoginProviderKey.Facebook.rawValue: fbCognitoToken]
// Retrieve your Amazon Cognito ID
credentialsProvider.getIdentityId().continueWithBlock { (task: AWSTask!) -> AnyObject! in
if (task.error != nil) {
print("Error: " + task.error!.localizedDescription)
}
else {
// the task result will contain the identity id
let cognitoId = task.result

//checking if cognito was successful, if true, sets success condition to true to prepare for segue into app
if cognitoId != nil{
print (cognitoId)
cognitoSuccess = true

let syncClient = AWSCognito.defaultCognito()

let dataset = syncClient.openOrCreateDataset("User_Data")
dataset.setString("test@test.com", forKey:"Email")
// credentialsProvider.refresh()
dataset.synchronize()
} }return nil}}

我可以正确地从 Facebook 读取数据,并且据我所知,所有身份验证均正确进行。我怀疑这里有一些简单的根源,但花了几天时间,我无法弄清楚!在 AWS 门户中使用 IAM 检查器会返回 Cognito 函数的所有“绿色检查”,因此我确信这也不是服务器端的权限问题。

再次感谢您提供的任何见解!

编辑:在上面的代码块之前,我调用:

let credentialsProvider = self.initializeCognito()

运行(身份池 ID 已加星号):

 func initializeCognito () -> AWSCognitoCredentialsProvider
{
let credentialsProvider = AWSCognitoCredentialsProvider(
regionType: AWSRegionType.USEast1, identityPoolId: "******")

let defaultServiceConfiguration = AWSServiceConfiguration(
region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider)

AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = defaultServiceConfiguration

return credentialsProvider
}

最佳答案

当您尝试获取经过身份验证的 ID 的凭据而不提供与其链接的任何提供者 token 时,可能会引发该异常。 Cognito 要求至少提供一项。

您能否检查一下在失败的 GetCredentialsForIdentity 调用期间是否包含了 facebook token ?如果没有,我猜这就是你的问题。

编辑:

由于您使用的是 AWSCognito.defaultCognito(),因此遵循 this docs page 上的示例可能会有所帮助。确保同步客户端使用正确的凭据提供程序:

let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider)

AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration

关于ios - 带有 iOS 的 Amazon Cognito : Access to Identity Forbidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36435723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com