收到客户端传回来的user token和user id
然后按官方api走的debug效验
https://graph.facebook.com/debug_token?input_token=app id|app
secret&access_token=user token
拿到的结果如图 跟标准的结果相差很多 只有valid等基础信息,明显不符合要求
{
"data": {
"app_id": "123456787891230", //这里是自己的appid
"type": "APP",
"application": "APP NAME", //这里是自己的app name
"is_valid": true,
"scopes": []
}
}
这里不得不吐槽一下fb的坑,跟着api走都拿不到信息,去查了下其他资料,都是这种方式,但是就是拿不到正确信息
然后去翻其他文档,也去stackoverflow走了一圈,发现有调转的写法,把2个token位置互换:
https://graph.facebook.com/debug_token?input_token=user
token&access_token=app id|app secret
curl一下发现报500内部错误 也不行
后来发现有2个地方可以获取app id和app secret组合后的access token
一是直接登录后去这点开查询
结果:
User Token 你需要授权给应用,才能获得访问口令。
App Token XX|1234567890|XXXXXXXXXXXXXXXXXXXXXXXX
二是通过api
https://graph.facebook.com/oauth/access_token?client_id=app
id&client_secret=app secret&grant_type=client_credentials
结果:
{“access_token”:“XX|1234567890|XXXXXXXXXXXXXXXXXXXXXXXX”,“token_type”:“bearer”}
拿到结果access token
再重新走debug验证,这次传入的位置就是access token
如下:
https://graph.facebook.com/debug_token?input_token=user
token&access_token=access token
验证成功
{
"data": {
"app_id": "1234567890", //自己的app id
"type": "USER",
"application": "APP NAME", //app name
"data_access_expires_at": 1660447243, //数据访问过期时间
"expires_at": 1657855243, //过期时间
"is_valid": true, //是否验证
"issued_at": 123456789, //颁发方
"profile_id": "0",
"scopes": [
"email",
"openid",
"gaming_profile"
],
"user_id": "1000001234567890" //用户id
}
}
效验过期时间,appid和userid是否符合就ok了,记录一下,防止后面再踩