Nha*_* Ho 7 authentication azure-mobile-services google-oauth xamarin.forms
我最近遇到此错误错误消息
我认为这是由于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;
}
Run Code Online (Sandbox Code Playgroud)
URL请求是:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是它仍然显示错误: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);
}
Run Code Online (Sandbox Code Playgroud)
每个 Azure 移动应用 SDK 的下一个版本将包含 Google OAuth 更改。不幸的是,我没有这些版本的时间表。
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |