1

我在Google应用程序引擎上托管Facebook应用程序,我需要确保用户在任何事情之前登录Facebook。如何将用户重定向到Facebook应用程序中的登录页面

我现在可以做的是使用fbxml显示Facebook的登录按钮,但我更喜欢用户将被重定向到Facebook的登录页面,如果他没有登录,然后回到我的应用程序的主页,这样我可以在做任何事之前确保用户已经登录。

我新的Facebook应用程序,我读here,我可以将用户重定向到

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL 

为了对他进行认证。但使用GAE的self.redirect(url)不起作用,页面保持不变。我希望我可以在我的处理程序中做这样的事情:

if u'signed_request' in self.request.POST: 
     facebook.load_signed_request(self.request.get('signed_request')) 
     if not facebook.user_id: 
      self.redirect("https://www.facebook.com/dialog/oauth?"+ 
          "client_id={0}&redirect_uri={1}" 
          .format(FACEBOOK_APP_ID, EXTERNAL_HREF)) 
      return 

但正如我刚才所说,这是行不通的。

+0

重定向无法正常工作,或者Facebook网址有问题吗? – 2012-01-09 16:39:41

+0

您是否检查过self.redirect方法实际上是否被调用? – proppy 2012-01-09 17:29:53

+0

重定向不起作用,是的,我确定它被称为 – 2012-01-09 21:18:06

回答

3

我假设'Facebook应用程序'是指一个画布应用程序 - 那么从用户的角度来看,这些应该会生活在https://apps.facebook.com/YOUR_NAMESPACE

如果是这样,您需要使用window.top通过Javascript添加重定向,因为您的应用程序已加载到iframe中。请参阅https://developers.facebook.com/docs/appsonfacebook/tutorial/并搜索“顶部”,然后在页面末尾查看示例。

+0

是的,这正是我的意思,我试图加入: '' 但我在打开页面时出现错误:'[APP_NAME]发生了错误。请稍后再试。“ – 2012-01-09 21:25:06

+0

Facebook窗口中显示该错误吗?如果是这样,你有没有在应用程序设置中正确设置域名? – mrtom 2012-01-10 00:34:02

+0

此外,我怀疑这是一个问题,但你应该URL编码您的重定向url – mrtom 2012-01-10 00:35:46

0

在Facebook提供的Php Sdk上也有很好的例子。我喜欢with_js_sdk.php示例。它可以无缝运行,并且很好地遵循。 https://github.com/facebook/php-sdk http://developers.facebook.com/docs/reference/php/

相关问题