В соответствии с инструкциями на https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-android я сгенерировал хэш подписи разработки с помощью KeyTool и зарегистрировал свое приложение на портале Azure.
Портал сгенерировал конфигурацию MSAL, которую я затем вставил в res.raw.auth_config. json в проекте (my-app-client-id и имя пакета my-app просто заполнители в приведенном ниже примере; фактические значения были автоматически сгенерированы Azure):
{
"client_id" : "<my-app-client-id>",
"authorization_user_agent" : "DEFAULT",
"redirect_uri" : "msauth://<my-app's package name>/npYKnQBHywGAasZflTy2xmdpEiU%3D",
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADMultipleOrgs",
"tenant_id": "organizations"
}
}
]
}
Затем я добавилпосле AndroidManifest.xml:
<application>
[..]
<!--Intent filter to catch Microsoft's callback after Sign In-->
<activity
android:name="com.microsoft.identity.client.BrowserTabActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>
<!--
Add in your scheme/host from registered redirect URI
note that the leading "/" is required for android:path
-->
<data
android:scheme="msauth"
android:host=""
android:path="/<signature-generated-by-keytool>" />
</intent-filter>
</activity>
[...]
</application>
В onCreate () моей деятельности я пытаюсь создать клиентское приложение для одной учетной записи следующим образом:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_account_model);
initializeUI();
PublicClientApplication.createSingleAccountPublicClientApplication(this,
R.raw.auth_config,
new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
@Override
public void onCreated(ISingleAccountPublicClientApplication application) {
mSingleAccountApp = application;
loadAccount();
}
@Override
public void onError(MsalException exception) {
displayError(exception);
}
});
}
К сожалению, PublicClientApplication.createSingleAccountPublicClientApplication () вызов вызывает сбой приложения со следующей ошибкой:
java.lang.IllegalStateException: URI перенаправления в файле конфигурации не совпадает с URI, созданным с именем пакета и хэшем подписи. Проверьте URI в файле конфигурации и регистрацию вашего приложения на портале Azure.
Я не могу понять, почему это происходит, поскольку содержимое файла конфигурации было создано порталом Azure, а имя пакета, подписьхэш и URI перенаправления соответствуют любому показанному на портале.
Буду признателен за любые предложения.