#android #azure-ad-b2c #android-studio-3.0 #msal
#Android #azure-ad-b2c #android-studio-3.0 #msal
Вопрос:
Я интегрировал Azure AD B2C
в свое приложение для Android с помощью MSAL
, вход и регистрация работают должным образом. access token
принимается только после успешной аутентификации. После успешной аутентификации не refresh Token
получен. я использую значение области — https://icorg.onmicrosoft.com/ffc-60c4234-bf7aff196847/offline_access
. в чем причина отсутствия Refresh Token
??
Комментарии:
1. Попробуйте указать область с
offline_access
вместоhttps://icorg.onmicrosoft.com/ffc-60c4234-bf7aff196847/offline_access
.2. @JoyWang — я пробовал с этим, теперь я не могу аутентифицироваться во время входа.
3. Вы запрашиваете токен с помощью своего собственного API? Если это так, попробуйте использовать пробел для их разделения, например
https://icorg.onmicrosoft.com/ffc-60c4234-bf7aff196847/api/read offline_access
.4. @joy Wang — я использую библиотеку MSAL, поэтому после успешной аутентификации Azure libraray возвращает обратный вызов с
AccessToken
. но неrefresh token
получен.5. Кажется, библиотека не предоставляет токен обновления — github.com/AzureAD/microsoft-authentication-library-for-android /…
Ответ №1:
MSAL не предоставляет токен обновления. Используйте трассировку сети, и вы увидите это в ответе, если область содержит offline_access , что будет по умолчанию, если вы укажете область, соответствующую вашему ресурсу.
Комментарии:
1. итак, как только срок действия токена доступа истек, я вызывал
mSingleAccountApp.acquireTokenSilentAsync(getScopes( ), maccount.authority, getAuthSilentCallback( ));
, поэтому при обратном вызове этого метода я получаю сообщение об ошибкеmessagecom.microsoft.identity.client.exception.MsalClientException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
как я могу управлять после истечения срока действия токена доступа в MSAL azure AD B2C?2. Исходя из проблем с GitHub, ваша проблема заключается в том, что в метод молчаливого токена передается неправильный параметр. В результате в ответе отправляется HTML-страница, а не объект JSON. Подробно укажите в своем коде, что такое конфигурация MSAL и какие параметры вы передаете в acquireTokenSilent. Трассировка сети также помогла бы.
3.
mSingleAccountApp.acquireTokenSilentAsync(getScopes( ), maccount.authority, getAuthSilentCallback( ));
работает, еслиtoken
срок действия не истек. но еслиaccess token
истек срок действия, он выдает вышеупомянутую ошибку.4. значение области действия равно —
https://iocrg.onmicrosoft.com/ffcc-e64c-43b-aeed-bf7f196847/user.offline_access
значение полномочий равноhttps://ibpocrg.b2clogin.com/54a1-b7b-488-9e03-36a891c19/v2.0/
. Это значения, передаваемые при вызовеacquireTokenSilentAsync
.5. Ваши полномочия должны содержать идентификатор политики b2c.