0

以下の手順に従って、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 をユーザー提供のスコープとして受け入れません"); }

4

2 に答える 2

0

SDK のスコープで既に openid を渡しています。そのため、再度渡さないようにするためのキャッチがあります :-)

于 2016-04-18T19:37:46.360 に答える
0

openid フローを実行するスコープとしてクライアント ID のみを渡します。

アップデート

この問題は 2.0.2-alpha で修正されました。

于 2016-04-18T18:06:05.813 に答える