2016-03-27 3 views
-1

Ich bin in der Lage, den Benutzer Google Informationen wie E-Mail und Spitznamen zu erhalten. Aber ich will das Benutzerprofil Bild vom Umfang https://www.googleapis.com/auth/userinfo.profileWie erhalten Sie das Zugriffstoken in den Endpunkten der Google App-Engine für das Benutzerobjekt?

Um den Zugriff abzurufen, die ich dieses
https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=XXX

aufrufen müssen Dadurch kehren zurück, um die JSON-Daten mit dem Link Bild zu profilieren. Musterantwort für oben Anfrage mit access_token

{ 
    "id": "123", 
    "name": "Admin User", 
    "given_name": "Admin", 
    "family_name": "User", 
    "link": "https://plus.google.com/XYZ", 
    "picture": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/XYX/4252rscbv5M/photo.jpg", 
    "locale": "en" 
} 

Wie erhalte ich das Zugriffstoken in Java?

Mein Code eingefügt unter:

package com.example.myapplication.backend; 

import com.google.api.server.spi.config.Api; 
import com.google.api.server.spi.config.ApiMethod; 
import com.google.api.server.spi.config.ApiNamespace; 
import com.google.appengine.api.oauth.OAuthRequestException; 
import com.google.appengine.api.users.User; 

import java.io.IOException; 

/** An endpoint class we are exposing */ 
@Api(
    name = "myApi", 
    version = "v1", 

     scopes = { Constants.EMAIL_SCOPE2 }, 
     clientIds = { Constants.WEB_CLIENT_ID, Constants.ANDROID_CLIENT_ID, 
       Constants.API_EXPLORER_CLIENT_ID}, 
     audiences = {Constants.ANDROID_AUDIENCE}, 


    namespace = @ApiNamespace(
    ownerDomain = "backend.myapplication.Ajay.example.com", 
    ownerName = "backend.myapplication.Ajay.example.com", 
    packagePath="" 
) 
) 
public class MyEndpoint { 

    /** A simple endpoint method that takes a name and says Hi back */ 
    @ApiMethod(name = "sayHi") 
    public MyBean sayHi(User user) throws OAuthRequestException, IOException 
    { 
     MyBean response = new MyBean(); 
     response.setData(user.getEmail() + " nick name->" + user.getNickname() + "user id " + user.getUserId() + "-->" + 
       user.toString() + "getAuthDomain--->" + user.getAuthDomain().toString()+" token"); 
     return response; 
    } 


} 
+0

wir können es nicht auf der Serverseite tun, es sei denn, wir haben ein Refresh-Token des Benutzers. Tun Sie dies stattdessen auf der Client-Seite –

Antwort

0

können Sie nicht, Benutzerobjekt in appengine ist eine Bequemlichkeit und schnelle Möglichkeit, den aktuell authentifizierten Benutzer zu erhalten, wird dies als Prinzip in appengine gehalten.

Wenn Sie ein Zugriffstoken erhalten möchten, müssen Sie den Benutzer Google OAuth2 verwenden, und dann erhalten Sie Zugriffstoken, wenn der Benutzer dies genehmigt.

Verwandte Themen