首页 文章

如何验证facebook访问令牌?

提问于
浏览
87

服务器必须做的事情;只需检查任何访问令牌的有效性 .

客户端向FB服务器发送FB.getLoginStatus获取的用户ID和访问令牌 .

正如我所料,会有任何url检查访问令牌的有效性,例如

http://xxx.facebook.com/access_token?=xxxxxxxxxxxxxxxxxxxxxxxxxxxx

返回它是否可用 .

或者是否有任何API(服务器端)?

6 回答

  • 67

    只是想让你知道,直到今天我首先获得了一个app访问令牌(通过GET请求到Facebook),然后使用收到的令牌作为 app-token-or-admin-token

    GET graph.facebook.com/debug_token?
        input_token={token-to-inspect}
        &access_token={app-token-or-admin-token}
    

    但是,我刚刚意识到了一种更好的方法(需要少一个GET请求的额外好处):

    GET graph.facebook.com/debug_token?
        input_token={token-to-inspect}
        &access_token={app_id}|{app_secret}
    

    如Facebook的Access Tokens here文档中所述 .

  • 1

    只需请求(HTTP GET):

    https://graph.facebook.com/USER_ID/access_token=xxxxxxxxxxxxxxxxx
    

    而已 .

  • 1

    官方支持的方法是:

    GET graph.facebook.com/debug_token?
         input_token={token-to-inspect}
         &access_token={app-token-or-admin-token}
    

    有关更多信息,请参见the check token docs .

    一个示例响应是:

    {
        "data": {
            "app_id": 138483919580948, 
            "application": "Social Cafe", 
            "expires_at": 1352419328, 
            "is_valid": true, 
            "issued_at": 1347235328, 
            "metadata": {
                "sso": "iphone-safari"
            }, 
            "scopes": [
                "email", 
                "publish_actions"
            ], 
            "user_id": 1207059
        }
    }
    
  • 0

    如果出现错误,您可以直接请求https://graph.facebook.com/me?access_token=xxxxxxxxxxxxxxxxx,令牌无效 . 如果您获得具有id属性的JSON对象,则它是有效的 .

    不幸的是,这只会告诉您令牌是否有效,而不是来自您的应用 .

  • 118

    手机号码和国家/地区代码的交换访问令牌(服务器端或客户端)

    您可以使用此 API https://graph.accountkit.com/v1.1/me/?access_token=xxxxxxxxxxxx获取带有 access_tokenmobile number . 也许,一旦你拥有 mobile numberid ,就可以使用你的 server & database 来使用 verify 用户 .

    xxxxxxxxxx 以上是 Access Token

    示例响应:

    {
       "id": "61940819992708",
       "phone": {
          "number": "+91XX82923912",
          "country_prefix": "91",
          "national_number": "XX82923912"
       }
    }
    

    访问令牌的Exchange代码验证代码(服务器端)

    如果你有一个 Auth Code ,你可以先用 API 获得 Access Token - https://graph.accountkit.com/v1.1/access_token?grant_type=authorization_code&code=xxxxxxxxxx&access_token=AA|yyyyyyyyyy|zzzzzzzzzz

    上面的 xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz 分别是 Auth CodeApp IDApp Secret .

    示例响应

    {
       "id": "619XX819992708",
       "access_token": "EMAWdcsi711meGS2qQpNk4XBTwUBIDtqYAKoZBbBZAEZCZAXyWVbqvKUyKgDZBniZBFwKVyoVGHXnquCcikBqc9ROF2qAxLRrqBYAvXknwND3dhHU0iLZCRwBNHNlyQZD",
       "token_refresh_interval_sec": XX92000
    }
    

    注意 - 这是服务器端的首选,因为API需要APP Secret,出于安全原因不能共享 .

    祝好运 .

  • 22

    可以从此网址找到应用令牌 .

    https://developers.facebook.com/tools/accesstoken

相关问题