2017-01-19 75 views
0

對於使用MobileServiceClient對App服務刷新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.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20i LCJpYXQiOjE0ODQ5MjA4MjEsImV4cCI6MTQ4NDkyNDQyMSwiYXRfaGFzaCI6IlhHa3dqOFpiZU9GX2N3SmpqeEpMRnciLCJhdWQiOiI3NDgwNzM0Njg2NDktanRtNTl0N21sY3NjaTg5bG9rYnV2c2VvYW5uMjhiZ3EuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDE4MTI5MTIzODE5MTgwNDA4NDciLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXpwIjoiNzQ4MDczNDY4NjQ5LWp0bTU5dDdtbGNzY2k4OWxva2J1dnNlb2FubjI4YmdxLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiZW1haWwiOiJnY3JvY2tlbmJlcmdAZ21haWwuY29tIiwibmFtZSI6ImdlcmFyZCBjcm9ja2VuYmVyZyIsInBpY3R1cmUiOiJodHRwczovL2xoNS5nb29nbGV1c2VyY29udGVudC5jb20vLVpINUxBQ1RhQTRJL0FBQUFBQUFBQUFJL0FBQUFBQUFBQUFBL0FLQl9VOHRpamZ5ZUN3Qk9tWUxzTmM4QUZJcTNDVGJhVHcvczk2LWMvcGhvdG8uanBnIiwiZ2l2ZW5fbmFtZSI6ImdlcmFyZCIsImZhbWlseV9uYW1lIjoiY3JvY2tlbmJlcmcifQ.Qie3hRwKP-mbzMp3gzWatmQdLLVw3Ae7PXw1Ly8Se7-EQWBPgky0TsQ-fvZIasiHaq1tQu9lXyNu9qYqaaAvKxKCGxRE5yYhC76Yar_rQig14lf42bMRYQ3ADzwsPZ0yUbEpk-h4_HU5Ld1lNqYG-hgzEdUsJm_uspJk7FggwcfuPw-YQJr-GXbqd2Om9fmgGPrPrsFy7EzPGL27q_BIY3cOLEVX0e3tbAAVhxFCri835nBKdkYOP9X2g6wSuMWCq6iPOjFzErhVYR_WUwi5H-UW6mJHswcAfs_3H wwt9RzCqfcyS1ZaehQVJE5B3uvK9WmAOrbD7uyEQmSli_zRWw」, 「PROVIDER_NAME」: 「谷歌」, 「user_claims」:[{ 「典型值」: 「ISS」, 「VAL」: 「https://accounts.google.com」},{ 「典型值」: 「IAT」 , 「VAL」: 「1484920821」},{ 「典型值」: 「EXP」, 「VAL」: 「1484924421」},{ 「典型值」: 「at_hash」, 「VAL」: 「XGkwj8ZbeOF_cwJjjxJLFw」},{ 「典型值」 : 「AUD」, 「VAL」: 「748073468649-jtm59t7mlcsci89lokbuvseoann28bgq.apps.googleusercontent.com」},{ 「典型值」: 「http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier」 「VAL」: 「101812912381918040847」},{ 「典型」: 「email_verified」, 「VAL」: 「真正的」},{ 「典型」: 「AZP」, 「VAL」:「748073468649-jtm59t7mlcsci89lokbuvseoann28bgq.apps.googleusercontent。 COM 「},{」 典型 「:」 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress」, 「VAL」: 「[我-googleemail]」},{ 「典型」 :「name」,「val」:「[my-name]」},{「typ」:「picture」,「val」:「https://lh5.googleusercontent.com/-ZH5LACTaA4I/AAAAAAAAAAI/AAAAAAAAAAA/AKB_U8tijfyeCwBOmYLsNc8AFIq3CTbaTw /s96-c/photo.jpg"},{"typ":"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname","val":"[my-givenname] 「},{」 典型 「:」 HTTP://schemas.xm lsoap.org/ws/2005/05/identity/claims/surname","val":"[my-surname]"}],"user_id":"[my-googleemail]「}]

直接瀏覽到https://[my-website].azurewebsites/.auth/refresh回報「您沒有權限查看該目錄或網頁」

如果我重複了「microsoftaccount」這些步驟的最後一步刷新工作

從Azure的請求跟蹤:
107 -GENERAL_FLUSH_RESPONSE_START
0毫秒

信息化 108 -GENERAL_RESPONSE_HEADERS
頭 的Content-Type: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 | ###。##。 ##。### | \ ###。##。##。## \ volume-4-default \ & ApiApp = 0
0毫秒

放牧 109 -GENERAL_RESPONSE_ENTITY_BUFFER
緩衝
您沒有權限查看該目錄或網頁。
0毫秒

信息性 110 -GENERAL_FLUSH_RESPONSE_END
BytesSent 400
ERRORCODE操作已成功完成。
(爲0x0)

+0

你能直接訪問移動後端在瀏覽器中,並與您的帳號登錄英寸然後嘗試訪問'https:// {your-appname} .azurewebsites.net/.auth/me'來檢索您的日誌信息。此外,請嘗試訪問「https:// {your-appname} .azurewebsites.net/.auth/refresh」來刷新訪問令牌。確保在Azure Portal中應用服務的「身份驗證/授權>高級設置」部分下的「令牌存儲」配置爲「開」。 –

+0

此外,當您通過代碼刷新令牌時,您可以利用[Fiddler](http://www.telerik.com/fiddler)捕獲詳細響應。如果可能,請使用詳細的錯誤消息更新您的問題。 –

+0

請求的信息添加到問題中。 –

回答

1

原來,使用Google登錄名時,只有在首次登錄時纔會發出刷新令牌。我移動了我的Azure網站並重新命名了OAuth客戶端設置,因此我可以登錄,但Token Store已不再有我的初始Google登錄名發送的refresh_token副本。在這裏找到答案的其餘部分。

Not receiving Google OAuth refresh token

0

根據您的詳細信息,我注意到,當你直接瀏覽https://[my-website].azurewebsites.net/.auth/me,響應不包含refresh_token。要隔離此問題,您可以參考以下步驟:

1.Browser https://brucechen-mobile.azurewebsites.net/.auth/login/google?access_type=offline並使用Google帳戶登錄;

2.Access /.auth/me找回我的登錄信息如下:

3.Browser /.auth/refresh看你是否能得到200 HTTP狀態代碼的響應。

此外,您可以關注此官方tutorial,瞭解如何刷新App Service移動應用程序中的用戶登錄以解決此問題。此外,當您調用MobileService.RefreshUserAsync()時,您可以利用Fiddler來捕獲詳細響應。

+0

在向Google進行身份驗證後訪問您的'/ .auth/me'時,我會看到'refresh_token'。登錄Google後,我會繼續深入探討爲什麼我沒有收到azurewebsites響應中的'refresh_token'。在使用'microsoftaccount'進行身份驗證後,我確實收到'refresh_token'。 –