使用重定向 URL 登录 Facebook

标签 facebook redirect facebook-javascript-sdk

我正在开发一个 Facebook Canvas 应用程序,我正在尝试执行以下操作,这在许多应用程序中都是标准操作。

  • 用户到达我的申请页面。
  • 如果他没有授予必要的权限,他将被重定向到一个他可以(可选地进行身份验证)并接受权限的页面,并且
  • 最终重定向回我的 Facebook 申请页面。

据我所知,这是通过将用户重定向到 OAuth dialog 来实现的, 在

http://www.facebook.com/dialog/oauth/?
  scope=PERMISSIONS&
  client_id=CLIENT_ID&
  redirect_uri=MY_CANVAS_URL&
  response_type=token

问题是出于安全原因,Facebook 不允许从 iframe 内部进行重定向。它只允许重定向到我在应用程序设置页面上声明为 site URL 的内容。在我的例子中,我已将其设置为 Facebook 上应用程序的 URL,因为这就是我作为 redirect_uri 放置的内容(并且有效)。

因此,用户看不到身份验证对话框,只会看到一个链接。一种解决方法是通过手动设置 top.location 使用 javascript 发出重定向。但这不是一个真正的解决方案,因为网站的一部分已经在 J​​avascript 重定向之前显示,而且我遇到了烦人的闪烁。

What is the correct way to obtain this flow?

最佳答案

你需要使用:

top.location.href=myAuthUrl;

这里有一个关于canvas auth的教程:https://developers.facebook.com/docs/appsonfacebook/tutorial/#auth

关于使用重定向 URL 登录 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7205987/

相关文章:

javascript - 在照片上传 Facebook api 中标记 friend

android - 无法通过本地 HTML 在 Android WebView 上呈现 Facebook 评论

ios - OpenGraph 分享帖子只对我可见

android - Android Facebook 应用程序的哈希键

apache - 为什么我的子域重定向到我的主域?

codeigniter:登录后如何重定向到当前 Controller (常规 php 中的 php_self)

ios - 如果我为 facebook 和 Gmail 添加 SSO,那么我是否应该将使用相同电子邮件 ID 登录的用户视为新用户?

facebook - 如何在没有任何登录凭据的情况下使用 appid 和 app secret 获取 facebook 访问 token ?

java - ProcessBuilder 重定向到标准输出

facebook - 使用帖子 ID 获取 Facebook 帖子的 URL(链接)