当 将Facebook应用程序与oauth.io
集成时,我们可以选择的最新API版本是 v2.3
。
登录过程虽然有效,但是,当尝试检索用户数据(/me
)时,只有元素name
和id
在原始数据中传递oauth.io
响应:
curl "https://oauth.io/auth/facebook/me"
-H “oauthio:k=<myOauthKey>&access_token=<fbAccessToken>"
我们得到以下响应:
{
"status": "success",
"data":
{
"id": "fbId",
"avatar": "https://graph.facebook.com/v2.3/fbId/picture",
"name": "User Name",
"gender": 1,
"url": "https://www.facebook.com/fbId",
"raw":
{
"name": "User Name",
"id": "fbId"
}
}
}
如果我们直接使用 Facebook 拨打电话,如果我在 URL 中指定它们,我可以获得额外的字段:
curl "https://graph.facebook.com/v2.5/me?access_token=<fbAccessToken>
&fields=name,email,gender,birthday,first_name,last_name,picture"
我们得到我们正在寻找的数据:
{
"name": "User Name",
"email": "emailu0040email.com",
"gender": "female",
"birthday": "03/02/1994",
"first_name": "User",
"last_name": "Name",
"picture": {
"data": {
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/hprofile-xlt1/v/t1.0-1/p50x50/whatever"
}
},
"id": "fbId"
}
原因很明显:因为v2.4
Facebook需要fields
参数来检索额外的数据。请参阅 https://developers.facebook.com/blog/post/2015/07/08/graph-api-v2.4/下更少的默认字段以提高性能
你知道有没有办法告诉 oauth.io 在调用Facebook /me
电话时填写fields
参数?
顺便说一句,使用:
https://oauth.io/auth/facebook/me?fields=name,email,gender,birthday
不起作用。
Oauth.io
已解决此问题,可从1.0.0-beta.18
https://github.com/oauth-io/oauthd/commit/7beec64ab39955c3afd2eb28ecf7288c74ccdc96