以下の手順に従って、adal android を使用して Azure 広告からトークンを取得します。
- バージョン: 2.0.1-alpha
次のメソッド authcontext.acquireToken(context,scope,scope,additional_scope, EMAIL_SIGNIN_POLICY, client_id,redirect_uri,getUserInfo(),PromptBehavior.Auto, "nux=1&", getCallback()) を呼び出す
- スコープは「openid offline_access」として定義されています
- ライブラリとともにアプリケーションをデバッグしているときに、成功した Web 応答が adal から次のように受信されます。
{"not_before":"****", "token_type":"Bearer", "id_token":"****", "id_token_expires_in":"****", "profile_info":"*** *", "refresh_token":"****", "refresh_token_expires_in":"*****" }
ただし、adal がこの応答を解析すると、adal ライブラリの条件の下を参照するため失敗します
Oauth2.java
if(mRequest.isIdTokenRequest()){
expiresInLookUp = "idtoken_expires_in";
token = response.get(AuthenticationConstants.OAuth2.ID_TOKEN);
}
AuthenticationRequest.java
boolean isIdTokenRequest() {
if (mScope != null && mScope.length != 0) {
for (String scope : mScope) {
if (scope.equalsIgnoreCase("openid") || scope.equalsIgnoreCase(mClientId)) {
return true;
}
}
}
return false;
}
スコープを「openid」に変更すると、ライブラリで以下の条件を参照するため、例外が発生します
AuthenticationContext.java
if (set.contains("openid")) { throw new IllegalArgumentException( "API は openid をユーザー提供のスコープとして受け入れません"); }