如何验证 Facebook 访问令牌?

服务器只需要做一件事: 检查任何访问令牌的有效性。

客户端发送到服务器用户 ID 和由 FB.getLoginStatus获得的访问令牌。正如我预期的那样,会有任何 URL 来检查访问令牌的有效性,比如 http://xxx.facebook.com/access_token?=xxxxxxxxxxxxxxxxxxxxxxxxxxxx

返回它是否可用或者是否有任何 API (服务器端) ?

129694 次浏览

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

不幸的是,这只会告诉你,如果你的令牌是有效的,而不是如果它来自您的应用程序。

官方支持的方法是:

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

有关更多信息,请参见 检查令牌文件

一个例子是:

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

ExchangeAccess Token for Mobile Number and Country Code(服务器端或客户端)

你可以得到的 mobile number与你的 access_token与这个 API https://graph.accountkit.com/v1.1/me/?access_token=xxxxxxxxxxxx。也许,一旦你有了 mobile numberid,你就可以把它们用到 核实server & database的用户身上。

上面的 xxxxxxxxxxAccess Token

例子回应:

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


用于 Access Token的 ExchangeAuth Code(服务器端)

如果你有一个 Auth Code而不是,你可以首先得到这个 API-https://graph.accountkit.com/v1.1/access_token?grant_type=authorization_code&code=xxxxxxxxxx&access_token=AA|yyyyyyyyyy|zzzzzzzzzzAccess Token

xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz分别是 Auth CodeApp IDApp Secret

示例响应

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

注意-这是首选的 server-side,因为 API需要的 APP Secret,这并不意味着是 sharedsecurity reasons

祝你好运。

只是想让你知道,直到今天,我首先获得一个应用程序访问令牌(通过 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 Token 给你文档所述。

可以从这个 URL 找到应用程序标记。

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

简单请求(HTTP GET) :

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

就是这样。

我从 facebook 开发者页面找到了这个官方工具,这个页面会让你跟踪有关访问令牌的信息-应用程序 ID,类型,应用程序范围,用户最后一次安装这个应用程序通过,发行,过期,数据访问过期,有效,起源,范围。 只需要访问令牌。

Https://developers.facebook.com/tools/debug/accesstoken/