我正在使用this方法登录google plus,它运行正常,我需要回调用户的电子邮件,但此方法作为回报并未提供电子邮件地址。我应该怎么做电子邮件,是他们的任何其他方法返回电子邮件或我们可以使用访问令牌获取用户电子邮件?
答案 0 :(得分:2)
您需要为请求添加其他范围。最近发生了电子邮件提供范围的更改,旧的范围已被弃用。完整列表位于https://developers.google.com/+/api/oauth#email-scopes,但除https://www.googleapis.com/auth/plus.login范围外,您可以安全地使用电子邮件范围。通过列出范围来指定范围,每个范围之间都有一个空格,因此您的按钮配置可能如下所示:
<span id="signinButton">
<span
class="g-signin"
data-callback="signinCallback"
data-clientid="CLIENT_ID"
data-cookiepolicy="single_host_origin"
data-requestvisibleactions="http://schemas.google.com/AddActivity"
data-scope="https://www.googleapis.com/auth/plus.login email">
</span>
</span>
您可以使用people.get API访问用户的完整个人资料,其中包含emails数组。数组的每个元素都包含地址类型(home,work等)和地址本身。 电子邮件范围仅列出与帐户直接关联的地址,而其他范围提供其他公开可用的地址,因此可能无法提供更多信息。
请注意,旧的userinfo。*范围已弃用,可能会在2014年9月停止工作。有关详细信息,请参阅https://developers.google.com/+/api/auth-migration#timetable。
更新:要清楚 - 登录按钮不会自动为您提供电子邮件。它请求获取电子邮件地址和用户个人资料信息的权限。它为您提供的是一个访问令牌,您可以将其用于进一步的请求。
正如@DalmTo和我指出的那样,为了实际获取信息,您需要调用people.get的API端点。转到此页面并转到示例部分,然后从下拉列表中选择JavaScript作为示例。您还需要加载javascript客户端库:有关示例,请参阅https://developers.google.com/api-client-library/javascript/samples/samples,但特别需要像
这样的行。<script src="https://apis.google.com/js/client.js?onload=onLoad"></script>
加载客户端库(并在加载时调用onLoad()函数)然后
<script>
function onLoad(){
gapi.client.load('plus', 'v1', onClientLoad);
}
</script>
在加载客户端时将调用onClientLoad()回调,并应设置一个标记以指示设置进行调用的事项。然后,作为signinCallback()函数的一部分,您将确保设置此标记(指示客户端库已准备就绪)并使用gapi.client.plus.people.get()方法发出请求。这可能是签名栏中的一部分:
gapi.client.plus.people.get({
'userId': 'me'
}).execute(function(response){
console.log(response);
});
这会调用people.get,请求特定用户的个人资料。 &#34; me&#34;的特殊用户ID表示它应该是已登录的用户。使用回调函数调用execute()执行请求,返回响应对象。在这个例子中,我们只是打印它,但它将是一个包含用户配置文件的JSON对象。
答案 1 :(得分:1)
您需要添加另一个范围https://www.googleapis.com/auth/userinfo.email
,然后您可以使用plus.people.get
<span id="signinButton">
<span
class="g-signin"
data-callback="signinCallback"
data-clientid="CLIENT_ID"
data-cookiepolicy="single_host_origin"
data-requestvisibleactions="http://schemas.google.com/AddActivity"
data-scope="https://www.googleapis.com/auth/plus.login,https://www.googleapis.com/auth/userinfo.email">
</span>
</span>
您可以在此处测试API:plus.people.get
注意:用户可以拥有多封电子邮件,您可能希望使用类型为account