php - 使用 OAuth 2.0 登录 Facebook

标签 php facebook oauth-2.0 facebook-login

  1. 我希望人们使用他们的 Facebook 帐户登录我的网站。
  2. 我需要从他们的 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

我成功验证了用户身份,但现在出现了主要问题。如何访问作为响应发送的数据 我只能看到一个名为 codeGET 变量和一些长文本。如何转换为可用数据?

我的网站使用 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/

相关文章:

javascript - Facebook JS API 无法注销

api - oAuth2 - WSO2 API 管理器和身份服务器集成

javascript - 使用 javascript 更改 Google One Tap 登录位置

PHP:静默失败的最佳实践

php - 如何通过dom过滤空节点?

java - Android Facebook 注销 : Where can I make code run when this happens?

java - 如何在 Java Selenium 中使用通配符条目进行搜索

c# - 使用 Xamarin.Auth 进行 OAuth2 身份验证 - 用户名和密码?

php - 在 Paypal 的快速结帐 API 中显示成本/价格

PHP Lua注册系统