2017-01-19 6 views
0

AppServiceに対してMobileServiceClientを使用してGoogleトークンをリフレッシュすることについて何か変更されました。以前は、MobileServiceClientを使用してXamarin FormsアプリでGoogleトークンを更新することができました。さて、ログイン後、リフレッシュしようとすると、何も返されません。次のようにApp Service Refresh Tokens

私のログインコードは次のとおりです。

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プロバイダに対して正常に動作します。それは数ヶ月前に働いていた。 https://[my-website].azurewebsites.net/.auth/meに直接ブラウズ

"あなたが正常に署名した" https://[my-website].azurewebsites.net/.auth/login/googleリターンに直接ブラウズ

Microsoft.Azure.Mobile.ClientのV3.1.0
Microsoft.Azure.Mobile.Server v2.0.0デベロッパー

戻り[{ "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 "{" typ ":" iss "、" val ":" https://accounts.google.com "}、{" typ ":" iat " "val": "1484920821"}、{"typ": "exp"、 "val": "1484924421"}、{"typ": "at_hash"、 "val": "XGkwj8ZbeOF_cwJjjxJLFw"}、{"typ" : "aud"、 "val": "748073468649-jtm59t7mlcsci89lokbuvseoann28bgq.apps.googleusercontent.com"}、{"typ": "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 "}、{" typ ":" http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress "、" val ":" [my-googleemail] "}、{" typ " : "名前"、 "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] "}、{" typ ":" http://schemas.xm lsoap.org/ws/2005/05/identity/claims/surname","[""""my-surname]"}],"user_id":"[my-googleemail] "}]

直接閲覧私は最後のリフレッシュステップは作品「Microsoftアカウント」で、これらの手順を繰り返した場合https://[my-website].azurewebsites/.auth/refresh戻り

「あなたは、このディレクトリまたはページを表示する権限がありません」。Azureの要求の追跡から


107 -GENERAL_FLUSH_RESPONSE_START
0ミリ秒

情報 108 -GENERAL_RESPONSE_HEADERS
ヘッダ のContent-Type:text/htmlの サーバー:マイクロソフト-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 MS

情報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のアプリケーションサービスのセクション "Authentication/Authorization> Advanced Settings"セクションで、 'Token Store'が" On "に設定されていることを確認してください。 –

+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.ブラウザ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 Mobile Appsのユーザーログインを更新する方法があります。さらに、MobileService.RefreshUserAsync()を呼び出すと、Fiddlerを使用して詳細な応答を取得できます。

+0

Googleに認証した後で '/ .auth/me'にアクセスすると、' refresh_token'が表示されます。 Googleにログインしてazurewebsitesの返信で「refresh_token」を受け取っていない理由を掘り下げて調べてみましょう。 'microsoftaccount'で認証した後、' refresh_token'を受け取ります。 –

関連する問題