2010-10-20 96 views
0

我们已经使用了java-facebook库很长一段时间(几年),尽管它似乎是我们没有通过FB获得任何新用户的原因之一,就是新用户看到一个错误,我知道是因为FB的新(六月份)安全。Facebook Canvas重定向URL

目前,我们有一个 “简单” 的帆布FB的应用程序,使用FBML,用户可以通过访问:

http://apps.facebook.com/$MYAPP 

画布网址传回:

http://www.facebook.com/connect/uiserver.php?app_id=$APPID&next=http%3A%2F%2Fapps.facebook.com%2F$MYAPP&display=page&locale=en_US&return_session=0&fbconnect=0&canvas=1&legacy_return=1&method=permissions.request 

这个网址,新用户(以前没有授权我们的应用)回来了:

API Error Code: 100 
API Error Description: Invalid parameter 
Error Message: next is not owned by the application. 

现有用户(谁启用了应用程序在6月之前)能够没有任何问题地访问它。

我们的网站网址被指定为:

http://apps.facebook.com/$MYAPP 

这个错误似乎意味着,该网站的URL和下一个URL必须在同一个域,而不是在Facebook上。

我已经能够改变网站的网址是:

http://www.OURREALAPP.com/ 

而且,域名为:

OURREALAPP.com 

,然后才得以改变画布URL返回:

https://graph.facebook.com/oauth/authorize?client_id=$CLIENT_ID&redirect_uri=http%3A%2F%2Fwww.OURREALAPP.com%2F$URL%2F 

这很好,第一次。它提示权限,并显示正确的数据。但是,如果我们再次访问它,它不会在“Facebook框架”中显示它,即它将用户直接发送到应用程序。

我也尝试修改REDIRECT_URI去apps.facebook.com/$MYAPP ...但是这给了我们关于不拥有URL错误。

我们需要做什么?有任何想法吗?

谢谢!

回答

0

这是相当不值钱,一年后,但在这里不用(在iFrame画布应用程序):

为了权威性新用户(使用客户端软件开发工具包),你可以做两件事情之一:

  1. 它们重新定向到将然后将它们重新定向到您选择的URL的URL。
  2. 使用的JS SDK一个弹出式对话框提示他们(但只有在他们点击的东西)

用户谁已经authed您的应用程序,可能不需要做任何。

下面是最新的认证文档: https://developers.facebook.com/docs/beta/authentication/

下面是一些代码,不会使用JS SDK和转发处理权限:

<script> 

    var fb_perms = "email,publish_actions" 
    var fb_url = "http://apps.facebook.com/awesome/" 

    FB.init({ 
     appId  : app_id, // App ID 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     oauth  : true, // enable OAuth 2.0 
     xfbml  : true // parse XFBML 
    }); 

    // login to facebook 
    FB.getLoginStatus(function(response) { 
     if (response.authResponse) return alert("user is logged in!") 
     var url = "https://www.facebook.com/dialog/oauth?" + 
      "client_id=" + app_id + "&" + 
      "redirect_uri=" + fb_url + "&" + 
      "scope=" + fb_perms + "&" + 
      "response_type=token" 
     top.location.href = url    
    }) 
</script> 

最佳,