2017-01-19 2 views
0

Что-то изменилось в отношении обновления токенов Google с помощью MobileServiceClient против App Service. Раньше я мог обновлять токены Google в приложении Xamarin Forms с помощью MobileServiceClient. Теперь, после входа в систему, любая попытка обновления возвратов запрещена.Служба поддержки обновления токенов

Мой Войти код выглядит следующим образом:

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": "Google", "user_claims": [{ "Тип": "ISS", "вал": "https://accounts.google.com"}, { "Тип": "IAT" , "вал": "1484920821"}, { "Тип": "ехр", "вал": "1484924421"}, { "Тип": "at_hash", "вал": "XGkwj8ZbeOF_cwJjjxJLFw"}, { "тип" : "ауд", "вал": "748073468649-jtm59t7mlcsci89lokbuvseoann28bgq.apps.googleusercontent.com"}, { "Тип": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" , "вал": "101812912381918040847"}, { "Тип": "email_verified", "вал": "истина"}, { "Тип": "AZP", "вал": "748073468649-jtm59t7mlcsci89lokbuvseoann28bgq.apps.googleusercontent. ком "}, {" Тип ":" http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress», "вал": "[мой-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: текст/html Сервер: Microsoft-IIS/8.0 X -FE-DATA: AppId: Unknown-StatusCode X-Powered by 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
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', чтобы обновить токен доступа. Убедитесь, что «Token Store» настроен как «Вкл.» В разделе «Аутентификация/Авторизация> Дополнительные настройки» службы вашего приложения на Azure Portal. –

+0

Кроме того, вы можете использовать [Fiddler] (http://www.telerik.com/fiddler), чтобы получить подробный ответ при обновлении токена вашим кодом. Если возможно, обновите свой вопрос с подробным сообщением об ошибке. –

+0

Запрошенная информация добавлена ​​к вопросу. –

ответ

1

Оказывается, что при входе в систему Google токены обновления выдаются только при первом входе в систему. Я переместил сайт Azure и переписал настройки клиента OAuth, поэтому мне удалось войти в систему, но у Token Store больше не была копия refresh_token, отправленная с моим первоначальным входом в Google. Нашел остальную часть ответа здесь.

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;

/.auth/me 2. Доступ, чтобы получить мою вошли информацию следующим образом:

3.Browser /.auth/refresh, чтобы понять, можно ли получить ответ с кодом состояния 200 HTTP.

Кроме того, вы можете ознакомиться с этим официальным tutorial об обновлении пользовательских логинов в приложениях приложений App Apps для устранения этой проблемы. Кроме того, вы можете использовать Fiddler для получения подробного ответа при вызове MobileService.RefreshUserAsync().

+0

Я вижу 'refresh_token' при доступе к вашему'/.auth/me' после аутентификации в Google. Я буду продолжать копаться в том, почему я не получаю 'refresh_token' в ответе azurewebsites после входа в Google. Я получаю 'refresh_token' после аутентификации с помощью' microsoftaccount'. –

Смежные вопросы