使用MobileServiceClient针对App Service刷新Google令牌方面有任何改变。我曾经使用MobileServiceClient在我的Xamarin Forms应用程序中刷新Google令牌。现在,登录后,任何刷新尝试都会被禁止返回。
我的登录代码如下:
public class Authentication : IAuthentication
{
public async Task<MobileServiceUser> LoginAsync(MobileServiceClient mobileClient, MobileServiceAuthenticationProvider provider)
{
return await mobileClient.LoginAsync(
Forms.Context,
provider,
new Dictionary<string, string>()
{
{ "access_type", "offline" }
});
}
}
我的刷新代码是:
var user = await MobileService.RefreshUserAsync();
即使我在成功登录后立即尝试刷新,刷新也会失败。 Token Store
配置为“开启”。刷新适用于Microsoft提供程序。几个月前它正在运作。
Microsoft.Azure.Mobile.Client v3.1.0
Microsoft.Azure.Mobile.Server v2.0.0
直接浏览https://[my-website].azurewebsites.net/.auth/login/google返回“您已成功登录”
直接浏览https://[my-website].azurewebsites.net/.auth/me返回[{ “的access_token”: “ya29.Gl3ZAw6B1H0cT_e6vRlHgwQd0U-bcDSKo_CGQ9wKwPH8H-EbtNojP61JSzDaiIgSzU14PrT3QRb14NsFPhFYrU8ikCPGkhwKkZMAtHCNSdzDhTPm5cl89VrAlNc3vRU”, “expires_on”: “2017-01-20T15:00:21.3928445Z”, “id_token”:” eyJhbGciOiJSUzI1NiIsImtpZCI6IjZlYzMwOTBlZjgyM2YxMWFhN2VhNDE0N2FlZWM1Zjk0YmViNWZkMDMifQ。 2LWMvcGhvdG8uanBnIiwiZ2l2ZW5fbmFtZSI6ImdlcmFyZCIsImZhbWlseV9uYW1lIjoiY3JvY2tlbmJlcmcifQ.Qie3hRwKP-mbzMp3gzWatmQdLLVw3Ae7PXw1Ly8Se7-EQWBPgky0TsQ-fvZIasiHaq1tQu9lXyNu9qYqaaAvKxKCGxRE5yYhC76Yar_rQig14lf42bMRYQ3ADzwsPZ0yUbEpk-h4_HU5Ld1lNqYG-hgzEdUsJm_uspJk7FggwcfuPw-YQJr-GXbqd2Om9fmgGPrPrsFy7EzPGL27q_BIY3cOLEVX0e3tbAAVhxFCri835nBKdkYOP9X2g6wSuMWCq6iPOjFzErhVYR_WUwi5H-UW6mJHswcAfs_3Hwwt9RzCqfcyS1ZaehQVJE5B3uvK9WmAOrbD7uyEQmSli_zRWw “ ”PROVIDER_NAME“: ”谷歌“, ”user_claims“:[{ ”典型值“: ”ISS“, ”VAL“:” HTTPS: //accounts.google.com"},{"typ":"iat","val":"1484920821"},{"typ":"exp","val":"1484924421"},{"typ” : “at_hash”, “VAL”: “XGkwj8ZbeOF_cwJjjxJLFw”},{ “典型值”: “AUD”, “VAL”: “748073468649-jtm59t7mlcsci89lokbuvseoann28bgq.apps.googleusercontent.com”},{ “典型值”:“HTTP:// schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier","val":"101812912381918040847"},{"typ":"email_verified","val":"true"},{"typ” : “AZP”, “VAL”: “748073468649-jtm59t7mlcsci89lokbuvseoann28bgq.apps.googleusercontent.com”},{ “典型值”:“HTTP://schemas.xml soap.org/ws/2005/05/identity/claims/emailaddress","val":"[my-googleemail]"},{"typ":"name","val":"[my - name]“ },{ “典型值”: “图像”, “VAL”: “https://lh5.googleusercontent.com/-ZH5LACTaA4I/AAAAAAAAAAI/AAAAAAAAAAA/AKB_U8tijfyeCwBOmYLsNc8AFIq3CTbaTw/s96-c/photo.jpg”},{ “典型值”: “http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname","val":"[my-givenname]"},{"typ":"http://schemas.xmlsoap .ORG / WS / 2005/05 /同一性/权利要求/姓”, “VAL”: “[我-姓]”}], “USER_ID”: “[我-googleemail]”}]
直接浏览https://[my-website].azurewebsites/.auth/refresh返回“您无权查看此目录或页面”
如果我使用“microsoftaccount”重复这些步骤,则最后一次刷新步骤。
来自Azure请求跟踪:
107. -GENERAL_FLUSH_RESPONSE_START
0毫秒
信息
108. -GENERAL_RESPONSE_HEADERS
头
内容类型:text / html
服务器:Microsoft-IIS / 8.0
X-FE-DATA:AppId:Unknown-StatusCode
X-Powered-By:ASP.NET
DWAS-Handler-Name:BEGIN | 403 | 80 | 0x0 | CONFIG_SUCCESS | ExtensionlessUrlHandler-Integrated-4.0 | ###。##。##。### | \ ###。##。##。## \体积-4-默认\&安培; ApiApp = 0
0毫秒
冗长
109. -GENERAL_RESPONSE_ENTITY_BUFFER
缓冲区
您无权查看此目录或页面
0毫秒
信息
110. -GENERAL_FLUSH_RESPONSE_END
BytesSent 400
ErrorCode操作成功完成
(0x0)
答案 0 :(得分:1)
事实证明,使用Google登录时,刷新令牌仅在首次登录时发出。我移动了我的Azure网站并重新命名了OAuth客户端设置,因此我能够登录,但Token Store
不再拥有我最初登录Google时发送的refresh_token
副本。在这里找到了答案的其余部分。
答案 1 :(得分:0)
根据您的详细信息,我注意到当您直接浏览https://[my-website].azurewebsites.net/.auth/me时,回复中不包含refresh_token
。要隔离此问题,您可以参考以下步骤:
1.浏览器https://brucechen-mobile.azurewebsites.net/.auth/login/google?access_type=offline并使用Google帐户登录;
2.访问/.auth/me以检索我记录的信息,如下所示:
3.浏览器/.auth/refresh,看看您是否可以获得200个http状态代码的响应。
此外,您可以按照此官方tutorial关于刷新App Service Mobile Apps中的用户登录信息来解决此问题。此外,您可以在调用MobileService.RefreshUserAsync()
时利用Fiddler捕获详细响应。