我相信,我在 laravel 中使用 oneAuth 捆绑包,基于 Phil Sturgeon 的 Fuel 的 NinjAuth,并试图获取用户的电子邮件地址。
我已经为我的请求添加了适当的范围,LinkedIn auth 屏幕成功地请求用户对基本个人资料和电子邮件地址的许可.. 到目前为止,一切都很好..
一个可能的问题是:电子邮件字段的正确名称是什么?我找到了对email-address
, emailAddress
, 'emailaddress` 的引用...
文档表明email-address
,但它不适合我:)
这是来自 /bundles/oneauth/libraries/oauth/provider/linkedin.php 的有问题的片段
// Create a response from the request
return array(
'uid' => array_get($user, 'id'),
// 'email' => array_get($user, 'email-address)',
// 'email' => array_get($user, 'emailAddress)',
'name' => array_get($user, 'firstName').' '.array_get($user, 'lastName'),
'image' => array_get($user, 'pictureUrl'),
'nickname' => $nickname,
'description' => array_get($user, 'headline'),
'location' => array_get($user, 'location.name'),
'urls' => array(
'linkedin' => $linked_url,
),
);
如果我取消注释电子邮件字段,请求会以某种方式失败(URL 仍然显示 mysite.com/connect/callback 但网站图标显示linkedin,我在 chrome 中得到空白页面:“ Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.
”)
如果上面代码中的 email 行被注释掉,我成功接收到所有其他详细信息,并且一条新记录被添加到我的 users 表和表 oneauth_clients 中,但 email 自然是空白的。
我一定错过了一些简单的东西!
更新
请求 URL 与电子邮件地址一起使用,但返回一个包含电子邮件地址的 json 对象!
如果上面的返回数组代码包含emailAddress
...
这是某人的成功故事:
“我分别对库和 demo.php 进行了这两项更改:
const _URL_REQUEST = 'https://api.linkedin.com/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress';
$response = $OBJ_linkedin->profile('~:(id,first-name,last-name,picture-url,email-address)');