官方文档:http://developers.facebook.com/docs/reference/api/

1:client 接入facebook的sdk后,登陆时app拉起facebook的授权页面,等用户授权登陆后,app通过sdk能拿到当前用户的accessToken和userID,app把这个id和token发送给服务器,服务器再验证。这个过程跟微信登陆很类似,微信是拉起微信客户端获取wxcode

2:服务器收到client app 发来的id和token,然后去facebook的后台验证,api如下

https://graph.facebook.com/debug_token?access_token={App-token}&input_token={User-token}

User-token为用户的token,App-token为APP的token,值为 {Your AppId}|{Your AppSecret},| urlencode 后变成了 %7C

#coding:utf-8
'''
create on 2017-05-31@author: sandy
'''import urllib.parse
url = "https://graph.facebook.com/debug_token?access_token={0}&input_token={1}"
app_token = "%s|%s" % ("AppId","AppSecret")
user_token = "accessToken"
url = url.format(app_token,user_token)
print(urllib.parse.quote(url))
# print(urllib.parse.urlencode({"access_token":app_token,"input_token":user_token}))

urllib.parse.urlencode 参数要求是 dic

服务器去facebook后台验证成功后返回的结果如下:

{"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 和 步骤1 client传来的fb_id 是不是一致

关于这个fb_id 进一步说明

客户端获取到的账号id 实际上不是用户的真正的facebook id,而是facebook账号在该应用下的openid,这个openid 只适用于当前的应用!!!类似微信的openid

账号id 是一个纯数字的字符串。

如果是MySQL,可以用无符号的bigint表示

3:获取用户的信息

登陆成功后,如果需要用户的一些基本信息比如昵称、性别、好友等等,就需要继续请求facebook的相关接口

https://graph.facebook.com/{user-id}?access_token={token}

以上,token可以有两种形式:

1、用户账号token,形式为:{User-token}

2、APP token,形式为:{Your AppID}%7C{Your AppSecret}

前面这个接口等同于 /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登陆授权 服务器接入记录相关推荐

  1. 服务器查看文件共享记录,服务器共享文件记录

    服务器共享文件记录 内容精选 换一换 CDM支持周期性自动将新增文件上传到OBS,不需要写代码,也不需要用户频繁手动上传即可使用OBS的海量存储能力进行文件备份.这里以CDM周期性备份FTP的文件到O ...

  2. Android第三方登陆之新浪微博Weibo篇(原生登陆授权)

    前言 Android第三方登录可以说是非常的常见,今天主要先说一下新浪微博第三方登陆授权. SDK版本支持 SDK v3.0已经发布了支持iPhone和Android的版本. 须将你的应用的包名签名信 ...

  3. android qq三方登录授权失败,QQ第三方登陆授权失败110401原因及解决办法分享

    qq第三方登陆授权失败出现代码110401是什么情况?遇到这种情况该如何解决?相信很多用户们在操作的时候都出现过类似的情况吧?下面是小编带来的攻略解析,一起来关注下! qq第三方登陆授权失败11040 ...

  4. linux查看用户的操作记录,Linux下查看用户登陆后的操作记录

    Linux下查看用户登陆后的操作记录  在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台 服务器多人登陆, ...

  5. 根据Web服务器的记录来追踪黑客(转)

    有感触,转此文 现今的网络,安全越来越受到大家的重视,在构建网络安全环境时,在技术手段,管理制度等方面都逐步加强,设置防火墙,安装入侵检测系统等等.但网络安全是个全方位的问题,忽略哪一点都会造成木桶效 ...

  6. Linux下查看用户登陆后的操作记录

    Linux下查看用户登陆后的操作记录 在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台 服务器多人登陆,一 ...

  7. 菜鸟Linux系列:[4]SSH免密码登陆远程服务器

    背景:搭建Hadoop环境需要设置无密码登陆,所谓无密码登陆其实是指通过证书认证的方式登陆,使用一种被称为"公私钥"认证的方式来进行ssh登录. 在linux系统中,ssh是远程登 ...

  8. Facebook的秘密服务器,竟藏着互联网的军事根源?

    "Jay,数据中心里有一朵云.""什么意思,外面有云?" "不是,里面."--数据中心里下雨了. 2011年,俄勒冈州Prineville. ...

  9. 使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

  10. 远程桌面服务器零售授权许可证,由于没有远程桌面授权服务器可以提供许可证...

    此文用于解决Windows server2008服务器远程桌面多用户120限制: Windows server2008服务器远程桌面登录时出现错误提示:"由于没有远程桌面授权服务器可以提供许 ...

最新文章

  1. windows下载anaconda3速度太慢怎么办
  2. 开玩笑,我的代码会有问题 ?!
  3. 1000在计算机术语是什么意思,计算机里所提及的1k字是什么
  4. 设置MySQL的字符编码
  5. 信息学奥赛一本通(1139:整理药名)
  6. 《Java编程思想》笔记14.类型信息
  7. java 读mdb,使用Java / Jackcess从加密的Access .mdb中读取
  8. linux下python网络编程框架-twisted安装手记,Linux下Python网络编程框架安装日志
  9. 年度网络购物十大被投诉网站淘宝、当当位居前二正文
  10. 关于ramp texture的使用
  11. 键盘按键发出声音,打不了字,提示启用筛选键
  12. c++语言设计五子棋游戏,C++实现五子棋游戏
  13. 【无代码体验】宜搭车辆管理系统模板试用
  14. 从两年一次到一年三次,百度频繁调整架构为哪般?
  15. Java动态追踪技术
  16. 淘系技术内容中台负责人接受采访回应“淘宝为什么要做媒体化升级”
  17. 网络舆论舆情监测怎么做的系统技术解决办法
  18. 教你急速快速批量插入1000万条数据到mysql数据库表面试题
  19. DO、PO、VO、DTO、BO、POJO概念
  20. Ansible 企业级自动化运维平台开发实战

热门文章

  1. java contains忽略大小写_关于java:字符串包含-忽略大小写
  2. 简单系统U盘制作 / 安装系统
  3. vscode git error: would clobber existing tag
  4. melogin.cn主页登录_melogin.cn登陆界面
  5. 由三个点坐标判断三个点能否组成三角形模板(自用,客官可取)
  6. HTML+CSS京东商城静态页面实现(1)
  7. 一个人如何开发一款app?(2020修改版)
  8. JAVA、android常用时间处理方法及类似微信微博发表时间显示
  9. HL340(usb转串口线)驱动
  10. 计算机控制面板空白,win7控制面板打开是空白的怎么办-解决控制面板打开之后空白的方法 - 河东软件园...