从Google+ API检索用户图片。 (App.Engine - Java)

时间:2015-03-18 10:53:22

标签: java api google-app-engine google-plus

我正在尝试检索连接到我的应用的用户的google plus个人资料图片,所以我尝试了这样的事情。

    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();

    String userMail = user.getEmail();
    String userId = user.getUserId();
    HttpSession session = request.getSession();     

    List<String> serviceAccountScopes = new ArrayList<String>();

    serviceAccountScopes.add(PlusScopes.USERINFO_EMAIL);
    serviceAccountScopes.add(PlusScopes.USERINFO_PROFILE);


    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();


    GoogleCredential credential = new GoogleCredential.Builder()
    .setTransport(httpTransport)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId(CLIENT_ID)
    .setServiceAccountPrivateKeyFromP12File(new File("client_secrets.p12"))
    .setServiceAccountScopes(serviceAccountScopes).build();



    Plus plus = new Plus.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName("1078451758443-aijgd9j5p8jqd30cuta8fbtgebaq5t4f.apps.googleusercontent.com").build();

    Person person = plus.people().get(userId).execute();
    String avatar = person.getImage().getUrl();

    session.setAttribute("userMail", userMail);
    session.setAttribute("userID", userId);
    session.setAttribute("avatar", avatar);

但是当我用我的谷歌帐户尝试这个时,我得到了404.所以我对它进行了调查,我发现它给我的userId的值与我的G +帐户中的值不同。

user.getUserId()给我的值是“11879128221240184894”,而我的G +帐户中的真实值是“113502398666410404252”。

然后我尝试了:

Person person = plus.people().get("113502398666410404252").execute();

它运作良好。

我的问题是:这两个“userId”之间有什么区别?我如何获得连接用户的userId才能使其正常工作?

提前致谢。

0 个答案:

没有答案