Laravel 5.2 Socialite 检索空电子邮件
Posted
技术标签:
【中文标题】Laravel 5.2 Socialite 检索空电子邮件【英文标题】:Laravel 5.2 Socialite Retrieve Null Email 【发布时间】:2016-11-03 03:36:37 【问题描述】:我是 Laravel 的新手,我正在尝试进行社交验证。 我看过一些教程,我必须从 Facebook 检索用户 ID、个人资料图片和名称。我的问题是电子邮件,它是空的。
我现在的对象是这样的:
User #195 ▼
+token: "EAACYY1xBrzcBAO9KZAjZAZAZBQHWhbtZAb9lIXvH9Y6miRUiABImupk3ZCzHRxy2ZBxc9DU8f1ZAcrw0NEVMmy3GOQMSSyrmDTvMPyREvGm4pA1Ok6zI85LxES4Huy2ZCsxIUr2ISbLreLIv1ZACItUUoqqAnvVPyR4s0ZD"
+id: "989087311199546"
+nickname: null
+name: "MyName"
+email: null
+avatar: "https://graph.facebook.com/v2.2/mypicturecode/picture?type=normal"
+"user": array:2 [▼
"name" => "MyName"
"id" => "MyId"
]
我的控制器是:
class FacebookController extends Controller
public function facebook()
return Socialite::driver('facebook')
->scopes(['email'])->redirect();
public function callback()
$user = Socialite::with('facebook')->user();
return dd($user);
// $user->token;
我最近发现了一些东西。我的作曲家中有 "guzzlehttp/guzzle": "~4.0" 以避免 cURL 错误 60: SSL 证书问题:无法获取本地颁发者证书(请参阅http://curl.haxx.se/libcurl/c/libcurl-errors.html)强>错误。安装 guzzle 4.0 后,Laravel Socialite 回到 2.0.4 版本。看起来 2.0.18 版本处理电子邮件和名字/姓氏问题。问题是安装guzzle 4.0时,需要socialite 2.0.4
【问题讨论】:
你尝试了另一个 Facebook 吗? 是的,我尝试了至少 3 个不同的 Facebook 帐户 【参考方案1】:Facebook 用户可以使用电话号码而不是电子邮件地址进行注册。这意味着 facebook 没有该用户的电子邮件地址。
您可能有自己的隐私政策。
看看这个:https://developers.facebook.com/docs/facebook-login/permissions#reference-email
【讨论】:
我测试了几封来自使用电子邮件在 facebook 中注册的人的电子邮件,我的 Facebook 应用程序具有检索用户电子邮件信息的复选框。 听起来很奇怪,你为什么不试试这个语法来代替你的呢? $user = Socialite::driver('facebook')->fields([ 'first_name', 'last_name', 'email', 'gender', 'birthday' ])->user(); // 将数据存储到我们的使用表并将它们记录到 $data = [ 'name' => $user->getName(), 'first_name' => $user->getName(), 'email' => $user- >getEmail() ];【参考方案2】:如果您使用的是 laravel 5.2 和 socialite 2.0 。 那么你将面临这个问题。这是社交名流中的一个错误。 用下面给出的代码替换它。 路径:vendor\laravel\socialite\src\Two\
https://github.com/laravel/socialite/blob/2.0/src/Two/FacebookProvider.php
然后下面的代码将为您提供完整的详细信息
return Socialite::driver('facebook')->fields([
'first_name', 'last_name', 'email', 'gender', 'birthday'
])->scopes([
'email', 'user_birthday'
])->redirect();
【讨论】:
【参考方案3】:您只需要为您想要从 Facebook 对象获取的有关您的用户 的任何数据添加更多权限 脸书apiurl
【讨论】:
以上是关于Laravel 5.2 Socialite 检索空电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
无法将 Laravel / Socialite 与 Lumen 一起使用
使用 Laravel Socialite 登录 Facebook
Laravel Socialite 与 Facebook 未登录
Laravel 7 Socialite Google 登录显示无效的授权错误