Xamarin MobileserViceClient使用Google 403进行更新



我正在使用Azure的MobileServiceClient SDK使用服务器进行身份验证。通过升级到4.x版本,我还使用Xamarin.auth通过Google和Facebook对用户进行身份验证。当Google回复回来时,我将获得刷新令牌。然后,我像这样致电移动服务SDK:

   var accessToken = account.Properties["access_token"];
                var idToken = account.Properties["id_token"];
                var zumoPayload = new JObject();
                zumoPayload["access_token"] = accessToken;
                zumoPayload["id_token"] = idToken;
                var user = await client.LoginAsync(MobileServiceAuthenticationProvider.Google, zumoPayload, );

这项工作非常好。无效的是呼叫client.refreshuserasync()。每当我登录后立即致电该方法的刷新令牌即将过期或不再有效。如何使用刷新令牌的示例。

我也尝试将其发送到Zumo有效载荷中,但行不通。我尝试在Google上尝试使我的用户无效(我正在获取刷新令牌),尝试通过浏览器登录并去Auth/Me登录,但刷新令牌不存在。任何帮助都很棒!

afaik,您可以利用 Xamarin.auth SDK独立联系身份提供商并在移动客户端上检索访问令牌,然后您需要登录使用您的后端(Azure Mobile App)以及用于检索authenticationToken的令牌,您可以利用authenticationToken访问移动应用程序下的资源。

由于您正在使用客户管理的身份验证,因此要刷新新的Access_Token,则需要在移动客户端端进行。我检查了 Xamarin.auth ,发现没有要求访问令牌的方法。您需要参考刷新访问令牌并自己实现此功能。我遵循oauth2authenticator.cs,并创建了一个扩展方法,用于请求访问令牌如下:

public static class OAuth2AuthenticatorExtensions
{
    public static Task RefreshAccessTokenAsync(this OAuth2Authenticator authenticator, Account account)
    {
        var dics = new Dictionary<string, string>
        {
            {"refresh_token",account.Properties["refresh_token"]},
            {"client_id", authenticator.ClientId},
            {"grant_type", "refresh_token"}
        };
        if (!string.IsNullOrEmpty(authenticator.ClientSecret))
        {
            dics["client_secret"] = authenticator.ClientSecret;
        }
        return authenticator.RequestAccessTokenAsync(dics).ContinueWith(task =>
        {
            if (task.IsFaulted)
            {
                //todo:
            }
            else
            {
                authenticator.OnRetrievedAccountProperties(task.Result);
            }
        });
    }
}

此外,如果您使用Microsoft.azure.mobile.mobile.client利用服务器管理的身份验证,那么您可以利用RefreshUserAsync来刷新访问令牌,此时,您以前的access_token,clientID,clientID已存储在azure上,以及您的移动应用程序后端将直接与Google的OAuth 2.0端点进行通信,并为您索取新的访问令牌,并在Azure上更新令牌商店。有关App Service中令牌商店的更多详细信息,您可以在此处关注。

相关内容

  • 没有找到相关文章

最新更新