2016-04-18 9 views
0

unten genannten Schritte Nach dem Token von azur Anzeige mit adal androidADAL Android: Es war uns nicht acquiretoken Antwort ‚id_token‘ zu analysieren, wenn der Anwendungsbereich als ‚openid offline_access‘ definiert ist

  • Version zu erhalten: 2.0.1 -alpha
  • Aufruf der folgenden Methode authcontext.acquireToken (Kontext, Umfang, Umfang, additional_scope, EMAIL_SIGNIN_POLICY, client_id, redirect_uri, GetUserInfo(), PromptBehavior.Auto, "NUx = 1 &", getCallback())

    • Umfang wird als "openid offline_access" definiert
    • Während zusammen mit Bibliothek Debuggen der Anwendung, erfolgreiche Web-Antwort von adal empfangen wird, als

    { "not_before": "****", „token_type ":" "Bearer", "id_token": "****", "id_token_expires_in": "****", "profile_info": "****", "refresh_token": "** ** ", " refresh_token_expires_in ":" ***** " }

aber wenn adal diese Antwort parst sie nicht, wie es unten conditon in adal Bibliothek bezieht sich

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; 
    } 
  • Ändern des Umfangs als „OpenID“ ergibt Ausnahme, da sie die unter Bedingung in der Bibliothek bezieht sich

    AuthenticationContext.java

    if (set.contains ("OpenID")) { throw new Illegal ( „API akzeptiert keine openid als Einsatz r-bereitgestellten Umfang "); }

Antwort

0

Übergeben Sie NUR Client-ID als ein Bereich zum Ausführen von Openid-Flow.

Update

Dieses Problem wurde in 2.0.2-alpha fixiert.

+0

Ja, in der Lage erfolgreich das Token zu erhalten. \t Aber beim Speichern der Token Adal Caches es zweimal und das nächste Mal holt das Holen des Tokens von Adal Cache die Ausnahme ** Cache hat mehrere Einträge ** AuthorizationContext.java 'if (request.isIdTokenRequest()) {cacheItem.setScope (new String [] {request.getClientId()}); key.setScope (neuer String [] {request.getClientId()}); mTokenCacheStore.setItem (Schlüssel, cacheItem); } ' –

0

Wir gehen bereits openid im Rahmen für Sie in unserer SDKs, weshalb wir einen Haken haben Sie es nicht, um sicherzustellen, passieren wieder :-)

+0

Also was sollte der Wert des Bereichs sein? 'openid' oder 'openid offline_access' oder 'Wert der Client-ID' –

+0

Der Wert der Client-ID. In unserem Denken, da Sie ein Token nur für sich selbst und nicht für eine Ressource erhalten, ist der beste Weg, dies zu demonstrieren, mit Ihrer Client-ID, die "Sie" ist. Lassen Sie es mich wissen, wenn Sie es zur Arbeit bringen, und wenn ja, markiere beantwortet. Vielen Dank! –

+0

Übergabe des Bereichs als Client-ID ruft das Token erfolgreich ab. –

Verwandte Themen