首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WebAuthenticator实现Google Id_token

使用WebAuthenticator实现Google Id_token
EN

Stack Overflow用户
提问于 2021-12-23 09:51:09
回答 1查看 485关注 0票数 0

我使用Xamarin基本要素作为我正在开发的Xamarin表单应用程序的一部分。我已经将它集成到我的aspnet.core后端中,而且它运行得很好。

但是当我在google和facebook登录时,我得到了一个id_token,但是如果我登录了google,我需要的是,而不是id_token。

我在启动时查看了“AddJwtBearer”部分的“AddAuthentication”方法,但是当我在控制器中使用'AuthenticateAsync‘方法时,我无法使它工作。

怎样才能做到这一点?后端基于以下示例中的代码:https://github.com/xamarin/Essentials/blob/develop/Samples/Sample.Server.WebAuthenticator/Controllers/MobileAuthController.cs

EN

回答 1

Stack Overflow用户

发布于 2022-01-31 15:55:09

试着从这里得到它:

代码语言:javascript
复制
var auth = await Request.HttpContext.AuthenticateAsync(scheme);
var idtoken = auth.Properties.GetTokenValue("id_token");

代码语言:javascript
复制
 string refreshToken = await HttpContext.GetTokenAsync("id_token"); 

检查这门课

代码语言:javascript
复制
 public class WebAuth
    {
        private const string AuthenticationUrl ="https://myapp.com/mobileauth/";

        private string _accessToken = "";
        private bool _isAuthenticated = false;

        public string AuthToken
        {
            get => _accessToken;
            set => SetProperty(ref _accessToken, value);
        }
    
       

        async Task OnAuthenticate(string scheme)
        {
            try
            {
                scheme = "Facebook";
                WebAuthenticatorResult result = null;

                var authUrl = new Uri(AuthenticationUrl + scheme);
                var callbackUrl = new Uri("myapp://");
                result = await WebAuthenticator.AuthenticateAsync(authUrl, callbackUrl);
                
                AuthToken = string.Empty;

                if (result.Properties.TryGetValue("name", out var name) && !string.IsNullOrEmpty(name))
                {
                    AuthToken += $"Name: {name}{Environment.NewLine}";
                }

                if (result.Properties.TryGetValue("email", out var email) && !string.IsNullOrEmpty(email))
                {
                    AuthToken += $"Email: {email}{Environment.NewLine}";
                }
                
                AuthToken += result?.AccessToken ?? result?.IdToken;
                IsAuthenticated = true;
            }
            catch (Exception ex)
            {
                AuthToken = string.Empty;
            }
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70460340

复制
相关文章

相似问题

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