第三方登录 - Facebook
# 创建应用
https://developers.facebook.com/apps (opens new window)
找到以下参数备用:
- 设置 - 基本:
应用编号
、应用密钥
- 设置 - 高级 - API 版本:
version
# Web 拉起授权
# 方式 1:跳转授权
# 方式 2:弹窗授权
# 后端校验
笔记
建议 API 接口都携带版本前缀,如 https://graph.facebook.com/v17.0/debug_token
,以免引版本升级导致的不兼容。
# 生成应用访问口令 (可选)
将前端传递的 access_token(用户token)
换取应用程序访问令牌
curl --location --request GET 'https://graph.facebook.com/oauth/access_token?client_id=xxxx&client_secret=应用id&grant_type=client_credentials'
{
"access_token": "{应用编号}|{应用密钥}",
"token_type": "bearer"
}
注意
不要直接复制官方文档的,会携带不可见字符在 URL 中,导致我卡了很久!!
如要复制,留意 URL 是否符合预期。
# 校验 token
用于判断前端传递的 token 是否是当前应用的
curl --location --request GET 'https://graph.facebook.com/debug_token?input_token={userToken}&access_token={应用编号}|{应用密钥}'
{
"data": {
"app_id": "xxxxx",
"type": "USER",
"application": "test",
"data_access_expires_at": 1694140400,
"expires_at": 1691491274,
"is_valid": true,
"issued_at": 1686366627,
"scopes": [
"public_profile"
],
"user_id": "xxxxxx"
}
}
在官方文档中,access_token 给出两种传递方式:
- 先换取
应用程序访问令牌
,使用其作为access_token
- 直接使用
"应用编号|应用密钥"
作为access_token
实践中发现,都无法成功获取用户信息(最后发现是把客户端密钥当做应用密钥),最终使用访问口令工具 - Meta 开发者 (opens new window) 中的App Token
,在页面中提到应用口令不会过期,应妥善保密
,相信可以当正式 token 使用。- 或是
input_token
和access_token
都使用 userToken,也能得到
# 获取用户信息
获取用户 id、name、email
信息,其中 emai
信息需要在 用例 - 身份验证和帐户创建 - 编辑
开启
curl --location --request GET 'https://graph.facebook.com/v17.0/me?fields=id,name,email&access_token=用户token'
{
"id": "xxxx",
"name": "xxxx",
"email": "[email protected]"
}
# 踩过的坑
- 提示需要
appsecret_proof
参数
解决一:在设置 - 高级,关闭 必须提供应用密钥
解决二:参考登录安全 - Facebook 登录 (opens new window) 生成
# 参考
上次更新: 2024/03/11, 22:37:05