- 我希望人们使用他们的 Facebook 帐户登录我的网站。
- 我需要从他们的 Facebook 个人资料中提取一些信息并将其添加到我网站的数据库中
我尝试使用 OAuth 2.0 方法重定向到这个 url
https://www.facebook.com/dialog/oauth?
client_id=YOUR_APP_ID
&redirect_uri=YOUR_REDIRECT_URI
&scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES
&state=SOME_ARBITRARY_BUT_UNIQUE_STRING
我成功验证了用户身份,但现在出现了主要问题。如何访问作为响应发送的数据 我只能看到一个名为 code
的 GET
变量和一些长文本。如何转换为可用数据?
我的网站使用 php
最佳答案
交换用户访问 token 的代码
一旦用户授权您的应用,您应该发出服务器端请求,以将上面返回的代码换成用户访问 token 。
https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID
&redirect_uri=YOUR_REDIRECT_URI
&client_secret=YOUR_APP_SECRET
&code=CODE_GENERATED_BY_FACEBOOK
client_secret 参数必须是应用设置中显示的应用 key 。对此请求的响应正文将是以下形式的 url 编码字符串:
access_token=USER_ACESS_TOKEN&expires=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES
您应该解析此字符串并使用 access_token 值向图谱 API 发出请求。您还应该将访问 token 保留在您的数据库中,以便向 API 发出进一步的请求而无需重新验证用户。
一旦到达访问 token 过期时间, token 将失效并且不能再用于对 API 的请求。要获取新的用户访问 token ,您必须再次让用户通过此流程。但是,如果用户没有取消对您的应用程序的授权,并且您不要求超出用户已经授予您的应用程序的权限,则不会显示任何对话框,并且用户将透明地重定向到您的 redirect_uri 使用新代码可以交换新的用户访问 token 。
如果为用户访问 token 交换代码时出现问题,授权服务器将发出 HTTP 400 并将错误作为响应正文中的 JSON 对象返回:
{
"error": {
"type": "OAuthException",
"message": "Error validating verification code."
}
}
更多引用结帐http://developers.facebook.com/docs/authentication/server-side/
向图谱 API 发出请求
使用有效的用户访问 token ,您可以请求从图谱 API 读取和写入数据。一个常见的第一个请求是获取刚刚对您的应用进行身份验证的用户的基本信息(包括 ID 和名称):
https://graph.facebook.com/me?access_token=YOUR_USER_ACCESS_TOKEN
关于php - 使用 OAuth 2.0 登录 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016676/