You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swift中通过AWSCognito实现Facebook Access Token登录?

用Facebook Access Token登录AWS Cognito的后续步骤

我之前刚好完成过这个流程,你的代码已经搭好了基础,接下来可以按以下步骤继续实现:

1. 关联Facebook凭证到Cognito提供者

你已经定义了包含Facebook Access Token的provider字典,接下来需要把它赋值给Cognito凭证提供者的logins属性,这样Cognito就能识别这个第三方身份:

credentialProvider.logins = provider

2. 配置AWS服务全局设置

需要用你的凭证提供者创建AWS服务配置,并设置为默认配置,这样后续调用其他AWS服务时会自动使用这个凭证:

let serviceConfig = AWSServiceConfiguration(region: .EUWest2, credentialsProvider: credentialProvider)
AWSServiceManager.default().defaultServiceConfiguration = serviceConfig

3. 获取Cognito身份ID与临时AWS凭证

接下来调用Cognito的API获取身份ID和临时凭证,这一步完成后就可以用这些凭证访问S3、DynamoDB等其他AWS服务了:

// 获取身份ID
credentialProvider.getIdentityId().continueWith { task in
    if let error = task.error {
        print("获取Cognito身份ID失败:\(error.localizedDescription)")
        return nil
    }
    
    // 成功获取身份ID
    guard let identityId = credentialProvider.identityId else {
        print("无法获取身份ID")
        return nil
    }
    print("Cognito身份ID:\(identityId)")
    
    // 可选:获取临时AWS访问凭证
    credentialProvider.getCredentialsWithCompletionHandler { credentials, error in
        if let error = error {
            print("获取AWS临时凭证失败:\(error.localizedDescription)")
            return
        }
        
        guard let awsCredentials = credentials else {
            print("未获取到AWS凭证")
            return
        }
        // 这里可以拿到临时的Access Key、Secret Key和Session Token
        print("Access Key: \(awsCredentials.accessKey)")
        print("Secret Key: \(awsCredentials.secretKey)")
        print("Session Token: \(awsCredentials.sessionToken)")
    }
    
    return nil
}

关键注意事项

  • 确保你的Cognito身份池已经启用Facebook作为身份提供者,并且在Facebook开发者后台配置了Cognito提供的OAuth重定向URI(可以在Cognito身份池的第三方提供者设置里找到)
  • 检查你的Facebook Access Token是否包含必要权限(比如openid、email),如果需要获取用户的基本信息,还需要申请对应权限
  • 后续要处理Facebook Access Token过期的情况:当Facebook token过期后,需要重新获取新的token,然后更新credentialProvider.logins并重新获取Cognito凭证

内容的提问来源于stack exchange,提问作者David Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:43:23