我正在使用Graph API,但我无法弄清楚如何获取登录用户的电子邮件地址 .
Graph的简介说明“The Graph API可以访问您通常在网站注册表单中请求的所有基本帐户注册数据,包括姓名,电子邮件地址, Profiles 图片和生日”
一切都很好,但我如何访问该信息?
这是我到目前为止:
$json = $facebook->api('/me');
$first = $json['first_name']; // gets first name
$last = $json['last_name'];
11 回答
获取用户电子邮件地址的唯一方法是请求电子邮件字段的扩展权限 . 用户必须允许您查看此内容,并且无法获取用户朋友的电子邮件地址 .
http://developers.facebook.com/docs/authentication/permissions
如果您通过在调用Auth Dialog的get字符串中传递scope = email来使用Facebook连接,则可以执行此操作 .
我建议使用SDK而不是file_get_contents,因为它可以更容易地执行Oauth身份验证 .
打开base_facebook.php在函数
getLoginUrl()
添加Access_token和使用范围的电子邮件权限
要获取用户电子邮件,您必须使用
email
权限使用他的Facebook帐户登录用户 . 用于Facebook PHP SDK(see on github)如下 .首先检查用户是否已登录:
如果他不是,您可以显示要求
email
权限的登录链接:当他登录时,可以在
$user_profile
数组中找到该电子邮件 .希望有所帮助!
您可以从登录用户的 Profiles 中检索电子邮件地址 . 这是代码片段
https://graph.facebook.com/me
将为您提供有关当前登录用户的信息,但您需要提供oauth令牌 . 看到:
http://developers.facebook.com/docs/reference/api/user
配置文件中的电子邮件可以使用扩展权限获得,但我猜是不可能获得用于登录fb的电子邮件 . 在我的应用程序中,我想在列表中显示用户的多个fb帐户,我想显示fb帐户的登录电子邮件作为相应帐户的唯一标识符,但我无法从fb中获取它,我得到的只是用户 Profiles 中的主要电子邮件,但就我而言,我的登录电子邮件和主电子邮件不同 .
只需在状态返回时添加这些代码块,然后开始传递查询字符串对象{} . 对于JavaScript开发者
初始化你的sdk之后 .
第1步://获取登录状态
这将检查文档加载并检查用户是否已登录时的登录状态 .
然后调用函数 checkLoginState ,并将响应传递给 statusChangeCallback
第2步:让您从状态中获取响应数据
这也将 userid 设置为变量,然后调用 getUserInfo func以使用Graph-api获取用户信息 .
在将 userid 作为参数传递之后,该函数然后获取与该 userid 相关的所有信息 . 注意:在我的情况下,我正在寻找电子邮件,以便允许我运行一个只能通过电子邮件登录用户的功能 .
//通过电子邮件登录
确保您的Facebook应用程序已发布 . 为了接收电子邮件,public_profile和user_friends的数据,您的应用必须公开 .
您可以稍后将其禁用以进行开发,并仍然可以获取电子邮件字段
在开发过程中,以下工具非常有用:
https://developers.facebook.com/tools/debug/accesstoken/
https://developers.facebook.com/tools/explorer
确保完全指定API的版本号,如
"v2.11"
而不是"2.11"
如果这不正确,我不确定它的默认值,但是当我错过了
v
时,我发现了一些奇怪的错误,试图检索电子邮件 .