Facebook Canvas重定向网址

时间:2010-10-20 16:45:09

标签: java facebook

我们一直在使用java-facebook库很长一段时间(几年),虽然看起来我们没有通过FB获得任何新用户的一个原因是新用户看到了错误,我理解是因为FB的新(6月)安全。

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

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

Canvas网址正在返回:

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

此错误似乎暗示网站网址和下一个网址需要位于同一个网域,而不是Facebook上。

我已将网站网址更改为:

http://www.OURREALAPP.com/

并且,域名是:

OURREALAPP.com

然后,能够更改Canvas 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 ...但这会给我们一个关于不拥有该网址的错误。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

一年之后,这一点非常毫无价值,但这里(对于iFrame Canvas应用程序):

为了授权新用户(使用客户端SDK),您可以执行以下两项操作之一:

  1. 将其重定向到一个网址,然后将其重定向到您选择的网址。
  2. 使用JS SDK通过弹出对话框提示它们(但只有在点击后才会显示)
  3. 已经为您的应用授权的用户可能不需要这样做。

    以下是最新的身份验证文档: 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>
    

    最佳,