首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileMaker数据API的亚马逊认知认证

FileMaker数据API的亚马逊认知认证
EN

Stack Overflow用户
提问于 2022-01-19 05:33:57
回答 1查看 95关注 0票数 0

我正在尝试创建一个C#版本的JavaScript亚马逊认知用户池身份验证(请参阅这里),但它不起作用。响应始终显示为null。请查找以下代码:

代码语言:javascript
复制
using System;
using Amazon.Runtime;
using Amazon.CognitoIdentityProvider;
using Amazon.Extensions.CognitoAuthentication;

namespace ConsoleApp1
{
    class AmazonCognitoSetup
    {
        private AuthFlowResponse response;

        public AuthFlowResponse Response { get; set; }

        public async void AsyncStuff()
        {
            String userpool_id = "us-west-2_NqkuZcXQY";
            String client_id = "4l9rvl4mv5es1eep1qe97cautn";
            String username = "username"
            String password = "password"
            
            var provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), Amazon.RegionEndpoint.USWest2);
            var userpool = new CognitoUserPool(userpool_id, client_id, provider);
            var user = new CognitoUser(username, client_id, userpool, provider);
            InitiateSrpAuthRequest initiateSrpAuthRequest = new() { Password = password};

            Console.WriteLine("Getting credentials");
            response = await user.StartWithSrpAuthAsync(initiateSrpAuthRequest).ConfigureAwait(false);//shows null
            
            var accesstoken = response.AuthenticationResult.AccessToken;
              Console.WriteLine(accesstoken);
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-20 04:24:28

修好了。问题是身份验证是异步的,所以我必须找到阻止的方法,直到响应返回。请参见下面重做的代码:

代码语言:javascript
复制
using System;
using Amazon.Runtime;
using Amazon.CognitoIdentityProvider;
using Amazon.Extensions.CognitoAuthentication;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class AmazonCognitoSetup
    {
        private string userpool_id = "us-west-2_NqkuZcXQY";
        private string client_id = "4l9rvl4mv5es1eep1qe97cautn";
        private string username = "username";
        private string password = "password";

        private string idToken;
        private string refreshToken;
        private string accessToken;

        public string IdToken { get => idToken; set => idToken = value; }
        public string RefreshToken { get => refreshToken; set => refreshToken = value; }
        public string AccessToken { get => accessToken; set => accessToken = value; }

        public void AsyncStuff()
        {
            //FileMaker PRO credentials for Amazon
            var provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), Amazon.RegionEndpoint.USWest2);
            var userpool = new CognitoUserPool(userpool_id, client_id, provider);
            var user = new CognitoUser(username, client_id, userpool, provider);
            InitiateSrpAuthRequest initiateSrpAuthRequest = new() { 
                Password = password
            };

            //authenticate to get tokens <--- change was here
            var task = Task.Run<AuthFlowResponse>(async()=> await user.StartWithSrpAuthAsync(initiateSrpAuthRequest));

            //assign tokens from results
            this.idToken = task.Result.AuthenticationResult.IdToken;
            this.refreshToken = task.Result.AuthenticationResult.RefreshToken;
            this.accessToken = task.Result.AuthenticationResult.AccessToken;
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70765723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档