Facebook登录服务器端接入

新博客地址(shankusu.me)

以下内容转载自

http://cwqqq.com/2017/12/06/facebook_login_api_server-side

Facebook登录服务器端接入

最近研究了下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/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Facebook 的接口调用可以使用 Java 编程语言来实现。Java 是一种广泛应用于企业级应用开发的编程语言,对于网络应用的开发具有优秀的支持和丰富的库和框架。 要使用 Facebook 的接口调用 Java,首先需要使用 Facebook 开发者平台创建一个应用程序。在创建应用程序后,可以获取一个应用程序标识符和密钥,这些用来作为身份验证和授权调用 Facebook 的 API。 接下来,你可以使用 Java 编程语言来发送 HTTP 请求到 Facebook服务器,并使用获得的应用程序标识符和密钥进行身份验证。可以使用 Java 的网络库,如 Apache HttpClient,来轻松地完成这些操作。 一旦完成身份验证,就可以开始调用 Facebook 的不同 API。你可以使用 Java 编程语言发送 GET 或 POST 请求到相应的 API 点,并处理返回的 JSON 或 XML 格式的数据。可以使用 Java 的 JSON 解析库,如 Jackson 或 Gson,来解析返回的数据以获取所需的信息。 例如,你可以使用 Java 调用 Facebook 的图像 API 来获取用户的头像信息。你可以发送一个 GET 请求到 "https://graph.facebook.com/{user_id}/picture",并将用户的 id 替换为实际的用户 id。然后,你可以将返回的图像数据保存到本地或在应用程序中显示。 总结来说,要在 Java 中调用 Facebook 的接口,你需要创建一个 Facebook 应用程序,使用 Java 的网络库发送 HTTP 请求进行身份验证,并使用 JSON 解析库解析返回的数据。通过这种方式,你可以利用 Java 的强大功能来开发与 Facebook 相关的应用程序或集成功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值