Facebook登录服务器端接入
来源:互联网 发布:游戏音效制作软件 编辑:程序博客网 时间:2024/05/16 01:55
文章已迁移到新博客 http://cwqqq.com/2017/12/06/facebook_login_api_server-side
最近研究了下facebook登陆授权,发现他的API文档真的不尽人意,有点像是新手引导,很多API参数细节都没有说明,都是一笔带过。所以,我这里写了篇文章,专门讲Facebook登录服务器端接入。
验证facebook账号授权
客户端先拉起facebook授权页面,等用户授权登录后,取到玩家的facebook id 和 token,然后将这个id和token传给服务端,服务端再对id和token做验证。
验证的过程是HTTP(s)验证,API如下:
https://graph.facebook.com/debug_token?access_token={App-token}&input_token={User-token}
以上的参数,User-token为用户的token,App-token为APP的token,值为 {Your AppId}%7C{Your AppSecret}。其中,%7C为urlencode的 | 符号
返回数据如下:
{ "data": { "app_id": 000000000000000, "expires_at": 1352419328, "is_valid": true, "issued_at": 1347235328, "scopes": [ "email", "publish_actions" ], "user_id": 100207059 }}这是一个授权成功的实例,先验证HTTP code=200, 再验证返回json串中 is_valid 为 true,最后对比 user_id 与客户端传来的用户 fb id一致。
facebook 账号id问题
id说明
App获得到的账号id,实际上不是用户真正的facebook id,而是facebook账号在该App下的openid,这个openid只适用于本App。这个账号id是一个纯数字的字符串,详细说明如下:
https://developers.facebook.com/docs/graph-api/reference/user
id长度
这里说下这个id长度问题。这点是facebook API文档未曾提及的,最后在facebook的开发者博客找到了。
如果是MySQL,可以用无符号的bigint表示
获取facebook账号个人信息
用户登录授权后,我们还要用户的一些个人数据,如昵称,性别,好友,等。这里就要利用用户的token,继续请求Facebook获取数据。
API如下:
https://graph.facebook.com/{user-id}?access_token={Token}
以上,token可以有两种形式:
1、用户账号token,形式为:{User-token}
2、APP token,形式为:{Your AppID}%7C{Your AppSecret}
第2种方式的前提是,用户授权登录过APP。但其实,这种方式容易触发权限问题,即使是玩家刚授权登录APP。
报错信息如:
Unusual behavior of facebook grap API (“type”: “GraphMethodException”, “code”: 100)
以上这点,facebook也没有做出解释,所以,建议以第1种方式获取fb账号个人数据。
前面这个接口等同于 /me?access_token={User-Token}, 默认只返回 id,name ,如果想要更多用户数据,就要以下面的方式查询了
/{user-id}?fields=id,name,gender,friends&access_token={User-Token},或 /me?fields=id,name,gender,friends&access_token={User-Token}
更多参数参考Facebook API文档, http://developers.facebook.com/docs/reference/api/
2017/6/2 补充facebook 账号id的说明
参考:http://blog.csdn.net/mycwq/article/details/71308186
1 0
- Facebook登录服务器端接入
- Facebook 登录接入记录
- Android平台接入Facebook登录
- FaceBook第三方登录的接入封装
- 接入google SDK登录、支付,facebook SDK登录详细教程
- 安卓接入facebook实现一键登录
- Facebook接入(旧)
- facebook SDK ios 接入
- cocos2dx接入facebook
- Facebook SDK接入备注
- Facebook ads接入
- facebook 登录
- Facebook登录
- FaceBook登录
- FaceBook登录
- Unity 接入Facebook。登录、分享、邀请、好友列表等功能。详细记录
- 3.服务器端接入文档
- Facebook接入(新)--iframe方式
- grpc++不支持异步多次写入
- 垃圾收集器
- 浏览器同源政策及其规避方法
- 看到一个理解进程和线程的故事
- Target runtime Apache Tomcat v7.0 is not defined.解决方法
- Facebook登录服务器端接入
- JSP 判断2000-2013之间有多少个闰年+获取当前的时间
- 顺序表基本操作
- js 获取变量的类型
- Java中Final关键字
- 02-cat &
- 【简要总结】Java1.8下的HashMap
- 动态规划
- 3、垃圾收集之回收的对象