1

我还想从https://www.googleapis.com/plus/v1/people/me电话中获得电子邮件。我收到很多信息,但没有收到电子邮件。任何人都可以帮忙吗?

HttpGet request = new HttpGet("https://www.googleapis.com/plus/v1/people/me?scope=https://www.googleapis.com/auth/userinfo.email");
request.setHeader("Authorization", "Bearer <access_token>");
HttpResponse response = client.execute(request);
4

2 回答 2

8

编辑:在 2013 年 12 月作为改进的 Google+ 登录选项的一部分进行了更新 - 您现在可以获得包含 Google+ 个人资料回复的电子邮件地址。

只要您有电子邮件或https://www.googleapis.com/auth/plus.profile.emails.read范围,您就会从该端点收到电子邮件。有关详细信息,请参阅https://developers.google.com/+/web/people/#retrieve_an_authenticated_users_email_address

var request = gapi.client.plus.people.get( {'userId' : 'me'} );
request.execute(function(person) {
  if(person['emails']) {
    console.log(person['emails'][0].value);
  }
});
于 2013-08-08T15:17:29.753 回答
1

我找到了答案。我的目标也是这个。我们可以成功地做到这一点:)

你需要:

  1. https://www.googleapis.com/auth/userinfo.email同意

  2. 访问令牌

在以上两个之后,只需向https://www.googleapis.com/oauth2/v2/userinfo发出 HTTP GET 请求

但是添加了标题“授权:承载<accessToken>

你可以通过很多方式做到这一点。我的方式是自定义 REST 调用

package com.google.plus.samples.photohunt.custom;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class NetClientGet {

// http://localhost:8080/RESTfulExample/json/product/get
public static void makeRequest(String access_token) {

  try {

    URL url = new URL("https://www.googleapis.com/oauth2/v2/userinfo");

    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestProperty("Authorization", "Bearer "+access_token);
    conn.setRequestMethod("GET");
    conn.setRequestProperty("Accept", "application/json");

    if (conn.getResponseCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                + conn.getResponseCode());
    }

    BufferedReader br = new BufferedReader(new InputStreamReader(
        (conn.getInputStream())));

    String output;
    System.out.println("REST call made. Output from Server .... \n");
    while ((output = br.readLine()) != null) {
        System.out.println(output);
    }

    conn.disconnect();

  } catch (MalformedURLException e) {

    e.printStackTrace();

  } catch (IOException e) {

    e.printStackTrace();

  }

}

}

于 2013-10-23T13:37:45.427 回答