如何通过AWS Cognito授权码获取access及refresh token?.NET SDK方案问询
AWS .NET SDK 授权码换令牌实现方案
AWS .NET SDK 存在对应封装方法,无需手动调用令牌端点的HTTP接口,具体实现如下:
- 原生
AWSSDK.CognitoIdentityProvider包已内置对应能力,你可以直接调用AmazonCognitoIdentityProviderClient类的InitiateAuthAsync方法,指定授权码流即可完成access token、refresh token的获取。
示例代码:
using Amazon.CognitoIdentityProvider; using Amazon.CognitoIdentityProvider.Model; // 初始化Cognito客户端,权限配置和其他AWS SDK客户端一致 var cognitoClient = new AmazonCognitoIdentityProviderClient(); var authRequest = new InitiateAuthRequest { // 指定授权码认证流 AuthFlow = AuthFlowType.AUTHORIZATION_CODE_GRANT, ClientId = "你的Cognito客户端ID", AuthParameters = new Dictionary<string, string> { { "code", "你从Facebook获取的授权码" }, { "redirect_uri", "你配置的授权回调地址,必须和申请授权码时传入的完全一致" } // 如果客户端配置了密钥,需额外添加以下参数 // { "client_secret", "你的Cognito客户端密钥" } } }; var response = await cognitoClient.InitiateAuthAsync(authRequest); // 令牌信息存储在response.AuthenticationResult中 // 包含AccessToken、IdToken、RefreshToken、ExpiresIn等字段
- 如果你需要更简化的封装,可以安装官方扩展NuGet包
Amazon.Extensions.CognitoAuthentication,该包封装了常用的认证流逻辑,无需手动构造参数字典。
注意:回调地址
redirect_uri的校验非常严格,大小写、末尾斜杠、查询参数任意一处和申请授权码时的取值不一致都会请求失败。
内容的提问来源于stack exchange,提问作者user16857875
相关产品推荐
相关产品推荐

