【发布时间】:2021-02-13 22:44:50
【问题描述】:
Facebook“有效 OAuth 重定向 URI”的用途是什么以及如何使用它?
我应该在这个网址上有什么?
当用户在我的网站上使用 Facebook 登录进行登录时,Facebook 是否会向 URL 发送任何数据?
这是一个关于重定向的问题,但我认为这不是 OAuth 重定向:purpose of redirect URI in facebook。
【问题讨论】:
Facebook“有效 OAuth 重定向 URI”的用途是什么以及如何使用它?
我应该在这个网址上有什么?
当用户在我的网站上使用 Facebook 登录进行登录时,Facebook 是否会向 URL 发送任何数据?
这是一个关于重定向的问题,但我认为这不是 OAuth 重定向:purpose of redirect URI in facebook。
【问题讨论】:
“有效的 OAuth 重定向 URI”可以在我的应用 > {您的应用} > Facebook 登录 > 设置中进行配置。
“Valid OAuth Redirect URIs”,我将只调用redirect_uri,当您Manually Build a Login Flow时使用。
在这种情况下,redirect_uri 是您的网络用户在登录后被重定向到的 URL。
Facebook 在重定向到redirect_uri 时将code 和state 作为URL 参数发送。
在您的 http 服务器上的 redirect_uri 上,您应该有一个编程代码来验证 state 并使用 code 获取 access_token。
在您的网页(例如https://yourdomain.com/fb-login.html)上,您有以下登录链接:
<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 应用 ID。
https%3A//yourdomain.com/fb-auth.html 是您的 redirect_uri,并且必须与您在“有效 OAuth 重定向 URI”中配置的内容相匹配。
mystate123 是您的自定义状态或会话 ID 类型,您可以使用它来验证回调是否从您的登录页面启动。 Facebook:“您的应用创建的一个字符串值,用于维护请求和回调之间的状态。”。
当用户点击“登录”时,Facebook 登录窗口出现并且她/他输入她/他的用户名和密码。之后,成功登录后,用户将被重定向到
https://yourdomain.com/fb-auth.html?code=JQJc5CF&state=mystate123
当上述 URL 的 GET 请求到达您的 http 服务器时,您必须提取 code 并且应该从 URL 中提取 state。
您可以验证 state 是否与您在 fb-login.html 的登录按钮上提供的 state 匹配
在您的服务器上,您必须发出另一个 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"
}
现在您可以使用访问令牌进行 API 调用:
https://graph.facebook.com/v9.0/me?fields=id,name,email&access_token=IEESb4Z
【讨论】: