Azure Google身份验证显示错误:不允许

我最近遇到这个错误错误信息

我认为这是由于谷歌Oauth的这一变化:https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html。

我正在使用Azure身份验证服务来验证用Xamarin Forms(C#)编写的iOS应用程序。

该代码请求Azure身份验证服务:

var window = UIKit.UIApplication.SharedApplication.KeyWindow;
var root = window.RootViewController;
if(root != null)
{
    var current = root;
    while(current.PresentedViewController != null)
    {
        current = current.PresentedViewController;
    }

    var user = await AzureService.Instance.Client.LoginAsync(window.RootViewController, MobileServiceAuthenticationProvider.Google, new Dictionary<string, string>() { { "access_type", "offline" } });
    return user;
}

网址请求是:

using(var client = new HttpClient())
{
    const string url = "https://www.googleapis.com/oauth2/v3/userinfo?alt=json&suppress_webview_warning=true";
    client.DefaultRequestHeaders.Add("Authorization", token);
    var json = client.GetStringAsync(url).Result;
    var profile = JsonConvert.DeserializeObject<GoogleUserProfile>(json);
    return profile;
}

但是它仍然显示错误:针对Google的Azure身份验证设置正确,因为我一直在使用此设置一个月,直到最近。 任何人都有同样的问题或任何想法如何解决这个问题?


简短版本是Google将OAuth协议更改为“更安全”。 我们目前正在对各种客户端SDK进行更新,以启用新的更安全的方法,该方法仅影响服务器流。

做什么的简短版本是实现客户端流。 将Google SDK集成到您的应用中,然后将收到的令牌发送到后端。 既然你在Xamarin.Forms中,这将意味着在平台特定的代码中实现一些东西。

对不起,我没有这个例子。 我已经完成了FB认证和AAD认证,但是目前还没有Google认证。 然而,这些概念是相同的。 您需要在平台特定的代码中执行Google Auth,然后使用类似于以下内容的方式调用ZUMO身份验证端点:

public async Task<MobileServiceUser> LoginAsync(MobileServiceClient client)
{
    // Call the code to do the Google Auth via the Google SDK
    var accessToken = await LoginGoogleAsync();
    // Construct and call the client-flow ZUMO auth
    var zumoPayload = new JObject();
    zumoPayload["access_token"] = accessToken;
    return await client.LoginAsync("google", zumoPayload);
}

每个Azure移动应用程序SDK的下一个版本将包含Google OAuth更改。 不幸的是,我没有这些版本的时间表。

链接地址: http://www.djcxy.com/p/94007.html

上一篇: Azure Google Authentication shows Error:disallowed

下一篇: How to use Call Type with EventBus