Facebook 第三方登录记录。
准备
首先注册一个 Facebook 开发者账号。
成功登录之后,需要先创建一个应用。
此时需要选择一个类型,因为是对接 Facebook 登录,因此选择『消费者』类型就好了。
点击下一步继续,填写完基本信息,点击创建应用即可。
为应用添加产品,选择 Facebook 登录:
添加完产品之后,还需要进行 OAuth 客户端授权设置,主要是设置有效 OAuth 跳转 URI。
控制面板下,可以看到应用编号和应用密钥,后面会用到。
登录流程
核心逻辑如下:
- 用户点击 Facebook 登录,客户端跳转 Facebook 登录授权
- 授权成功之后,携带 code 以及 state,重定向回登录页
- 客户端根据 code 以及 state,请求 Facebook Api,换取临时 accessToken
- 客户端将 accessToken 发送给服务端,服务端请求 Facebook Api 获取用户信息
PHP 服务端接入
服务端接入,安装 facebook sdk:
1 | composer require facebook/graph-sdk |
登录 API:
1 | public function facebookLogin() { |
需要注意的是,因为 Facebook 需要科学上网才能访问,如果本身在墙内,通过 SDK 请求是无法请求成功的,会得到以下错误信息:
Connection timeout after 10000 ms
此时有两种解决方案:
- 通过境外的服务器进行调试
- 本地科学上网的情况下,更改 Facebook SDK 源码,
vendor/facebook/graph-sdk/src/Facebook/HttpClients/FacebookCurlHttpClient.php
97 line,增加:CURLOPT_PROXY => "Your local agent"