【问题标题】:Facebook Canvas Redirect URLFacebook 画布重定向 URL
【发布时间】:2010-10-20 16:45:08
【问题描述】:

我们已经使用 java-facebook 库已经有一段时间了(几年了),尽管我们没有通过 FB 获得任何新用户的原因之一是新用户看到一个错误,这我知道是因为 FB 的新(6 月)安全。

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

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

Canvas URL 正在返回:

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

此 URL 用于新用户(之前未授权我们的应用)返回:

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 上。

我已经能够将站点 URL 更改为:

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 ...但这给了我们一个关于不拥有该 URL 的错误。

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

谢谢!

【问题讨论】:

    标签: java facebook


    【解决方案1】:

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

    为了对新用户进行身份验证(使用客户端 SDK),您可以执行以下两项操作之一:

    1. 将它们重定向到一个 URL,然后将它们重定向到您选择的 URL。
    2. 使用 JS SDK 通过弹出对话框提示他们(但仅在他们单击某些内容后)

    已经对您的应用进行身份验证的用户可能也不需要这样做。

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

    最好的,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 2011-07-15
      • 1970-01-01
      相关资源
      最近更新 更多