2013-04-11 7 views
5

so implementiert i google plus Jetzt meine App ... meine Implementierung ziemlich genau das Beispiel here gegeben folgt. Der größte Unterschied zwischen meinen und ihm ist, dass ich eine größere Menge von Scopes habe, die ich benötige. wenn mein plusclient Aufbau angeben i die folgenden Bereiche:Android PlusClient Implementierung und immer ein Token

"https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email" 

später auf der ganzen Linie in meiner onConnected Methode, die ich versuche, eine accesstoken von meiner Sitzung, um unsere Server zu übergeben zu bekommen, wo wir dem wirklichen Fleisch & potatos Arbeit tun .

GoogleAuthUtil.getToken(SplashActivity.this, mPlusClient.getAccountName(), "oauth2: https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email") 

dies ergibt einen accesstoken. HURRA! Recht? Nee. Wenn wir dieses Token verwenden, scheint es, dass es nicht mit unserer App verknüpft ist. wenn das Token über Googles tokeninfo Endpunkt ausgeführt wird, bekommen wir etwas entlang der Linien von

{ 
"issued_to": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com", 
"audience": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com", 
"user_id": "107245641469745809180", 
"scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email", 
"expires_in": 3577, 
"email": "[email protected]", 
"verified_email": true, 
"access_type": "online" 
} 

, der Wert issued_to nicht mit einem unserer Client-IDs nicht übereinstimmen. Laut dem letzten Teil von this blog post kann Google diese Tokenanfrage nicht mit unserem Projekt abgleichen. Allerdings habe ich in unserer API-Konsole tatsächlich den SHA-Fingerabdruck für Android und es ist tatsächlich mit dem Paketnamen durch ein Semikolon getrennt. keine Rechtschreibfehler. Ich habe Stunden gewartet, um zu sehen, ob es ein Vermehrungsproblem war. Ich habe auch den SHA-Fingerabdruck und was nicht hinzugefügt, um eine Client-ID für unseren Debug Keystore zu erstellen. Wir haben das gleiche Problem, ob wir eine signierte Apk aus der Eclipse exportieren oder ob wir sie direkt ausführen.

dies macht mich verrückt. Ich weiß nicht, wohin ich mich wenden soll.

als Beispiel, wenn die einen Aufruf zu

googleapis.com/plus/v1/people/me/people/visible?access_token=TOKEN_HERE & maxResults = 100 & token = & alt = json & = orderBy beste

i bekommen

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "usageLimits", 
    "reason": "accessNotConfigured", 
    "message": "Access Not Configured" 
    } 
    ], 
    "code": 403, 
    "message": "Access Not Configured" 
} 
} 

weil google aus irgendeinem Grund nicht, dass die Token mit meinem Projekt verknüpfen haben.

+0

Dies macht mich verrückt. Ich kann es anscheinend nicht lösen. – frostymarvelous

Antwort

2

bisher, wird dies in der Google api als Bug über kommen.

wenn ich die nehmen „https://www.google.com/m8/feeds“ scope dann funktioniert alles und das Token erfolgreich mit unserem Projekt verbunden ist. Wenn "https://www.google.com/m8/feeds" als angeforderter Bereich enthalten ist, bricht auf der Api-Seite alles ab, obwohl der Benutzer ordnungsgemäß nach dieser spezifischen Berechtigung gefragt wird. Obwohl wir beim Anfordern dieses Bereichs immer noch ein Token erhalten, ist das Token nicht mit unserem Projekt verknüpft.

+2

Nur für alle anderen, brauchen Sie ein Nachfahren Schrägstrich auf dieser URL: "https://www.google.com/m8/feeds/ - Es wird nicht übereinstimmen, den Bereich ohne es und einen Fehler geben. –

+0

Ich schätze Ihre Hilfe sehr. Beeindruckend. alles was ich sagen kann ist wow. ein fehlender Schrägstrich Haha. Ich bin der Meinung, dass es ein Fehler in der API ist. Wenn Sie diesen Bereich ohne den abschließenden Schrägstrich anfragen, löst er den Benutzer auf der Berechtigungsseite auf und benachrichtigt ihn, dass wir diese Berechtigung anfordern, aber die Verknüpfung des Tokens mit unserer App wird getrennt ... auf jeden Fall. Vielen Dank. Vielen Dank :-) – MrTristan

+0

auch, interessanterweise ... wenn Sie das Token ausführen, erhalten Sie nach der Verwendung oder nicht mit dem Schrägstrich durch diesen tokeninfo Endpunkt zeigt es tatsächlich den Bereich mit und ohne den Schrägstrich in der Liste der zugeordneten Bereiche. vielleicht gibt es zwei m8/feeds bereiche, die auflösen? – MrTristan

1
String accessToken = GoogleAuthUtil.getToken(getActivity(), plusClient.getAccountName(),  
"oauth2:" + Scopes.PLUS_LOGIN + " " + Scopes.PLUS_PROFILE + " " + MY_SCOPE); 

Mein Code funktioniert. Vielleicht haben Sie unnötiges Label nach „oauth2:“ haben

+0

ja der Code funktioniert auch für mich ... ich bekomme einen AccessStoken .... es ist nur, dass das Access Token nicht mit unserem Projekt verbunden ist. Ich kann einen Anruf auf "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" machen, aber alle anderen Anrufe mit diesem Token, wie ich oben erwähnt habe, ergeben eine 403 – MrTristan

+0

Ohh .. Sie sollten eine andere hinzufügen Bereiche .. –

+0

Ich verwende "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth /plus.me https://www.google.com/m8/feeds https: //www.googleapis.com/auth/userinfo.email "wie meine Bereiche – MrTristan