如何验证facebook访问令牌?

时间:2011-12-22 15:02:08

标签: facebook

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

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

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

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

返回是否可用。

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

6 个答案:

答案 0 :(得分:122)

官方支持的方法是:

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
    }
}

答案 1 :(得分:70)

如果收到错误,您可以简单地请求https://graph.facebook.com/me?access_token=xxxxxxxxxxxxxxxxx,令牌无效。如果你得到一个带有id属性的JSON对象,那么它就是有效的。

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

答案 2 :(得分:23)

只是想让你知道,直到今天我才第一次获得应用访问令牌(通过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文档中所述。

答案 3 :(得分:1)

Access Token(服务器端或客户端)

的Exchange Mobile Number and Country Code

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

上面的{p> xxxxxxxxxxAccess Token

响应示例:

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

<小时/>

Auth Code(服务器端)

的Exchange Access Token

如果您有Auth Code,则可以先使用Access Token - https://graph.accountkit.com/v1.1/access_token?grant_type=authorization_code&code=xxxxxxxxxx&access_token=AA|yyyyyyyyyy|zzzzzzzzzz

获取API 上面的

xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz分别是Auth CodeApp IDApp Secret

响应示例

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

注意 - 这是server-side的首选,因为API要求APP Secret shared不是security reasons

祝你好运。

答案 4 :(得分:1)

仅请求(HTTP GET):

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

就是这样。

答案 5 :(得分:0)

可以从此URL中找到应用程序令牌。

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