2016-03-27 11 views
-1

メールやニックネームなどのGoogleユーザー情報を取得できました。しかし、私はこれは、プロフィール画像へのリンクを含むJSONデータをバック返されます。この
https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=XXXUserオブジェクトのGoogleアプリケーションエンジンのエンドポイントでアクセストークンを取得するにはどうすればよいですか?

を呼び出す必要があることにアクセスするにはスコープhttps://www.googleapis.com/auth/userinfo.profile

からユーザープロフィール画像を取得します。私はJavaでアクセストークンを取得するにはどうすればよい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" 
} 

と上記の要求のための サンプル応答?

私のコードを以下に貼り付けられます:

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

ユーザーの更新トークンがない限り、サーバー側では実行できません。クライアント側でこれを行う代わりに –

答えて

0

あなたは、AppEngineの内のユーザーオブジェクトは、利便性と、現在認証されたユーザを取得する簡単な方法であることができない、これは、AppEngineのに原則として維持されます。

アクセストークンを取得するには、Google OAuth2をユーザーにする必要があります。ユーザーが承認すると、アクセストークンが取得されます。

関連する問題