Facebook "Valid OAuth Redirect URIs" 的目的是什么?

What is the purpose of Facebook "Valid OAuth Redirect URIs"?

Facebook“有效的 OAuth 重定向 URI”的用途是什么以及如何使用它?

这个URL我应该有什么?

当用户在我的网站上使用 Facebook 登录登录时,Facebook 是否会向 URL 发送任何数据?

这是一个关于重定向的问题,但我认为它不是 OAuth 重定向:purpose of redirect URI in facebook

“有效的 OAuth 重定向 URI”可以在“我的应用程序”>“{您的应用程序}”>“Facebook 登录”>“设置”中配置。

"有效的 OAuth 重定向 URI",我只称其为 redirect_uri,当您 Manually Build a Login Flow.

在这种情况下,redirect_uri 是一个 URL,您的网络用户在登录后将被重定向到该站点。

当重定向到 redirect_uri.

时,Facebook 发送 codestate 作为 URL 参数

在您的 http 服务器上的 redirect_uri 上,您应该有一个编程代码来验证 state 并使用 code 获得 access_token.

如何进行服务器端 API 调用的示例:

1。您的登录页面

在您的网页上(例如 https://yourdomain.com/fb-login.html),您有以下登录名 link:

 <a href="https://www.facebook.com/v9.0/dialog/oauth?client_id=111&redirect_uri=https%3A//yourdomain.com/fb-auth.html&state=mystate123">Login</a>

111 是你的 Facebook App ID。

https%3A//yourdomain.com/fb-auth.html 是您的 redirect_uri 并且必须与您在“有效的 OAuth 重定向 URI”中配置的相匹配。

mystate123 是您的自定义状态或会话 ID 类型,您可以使用它来验证回调是否从您的登录页面启动。 Facebook:“您的应用创建的字符串值,用于维护请求和回调之间的状态。”。

2。 Facebook 登录 window

当用户单击“登录”时,Facebook 登录 window 出现,she/he 输入 her/his 用户名和密码。之后,成功登录后,用户将被重定向到 https://yourdomain.com/fb-auth.html?code=JQJc5CF&state=mystate123

3。从回调中提取参数

当上述 URL 的 GET 请求到达您的 http 服务器时,您必须提取 code 并且应该从 URL 中提取 state

4。验证状态(可选)

您可以验证 state 是否与您在 fb-login.html

的登录按钮上提供的 state 匹配

5。得到access_token

在您的 服务器 上,您必须发出另一个 GET 请求才能获得 access_token。这是 服务器到服务器 的调用,因此您可以包含您的 client_secret警告:切勿在客户端代码中包含您的 client_secret

 https://graph.facebook.com/v9.0/oauth/access_token?client_id=111&redirect_uri=https%3A//yourdomain.com/fb-auth.html&client_secret=222&code=JQJc5CF

响应是:

{
  "access_token": "IEESb4Z",
  "token_type": "bearer"
}

6.拨打 API 次电话

现在您可以使用访问令牌进行 API 调用:

https://graph.facebook.com/v9.0/me?fields=id,name,email&access_token=IEESb4Z