【问题标题】:Invalid Credentials using Heroku URL as Canvas URL使用 Heroku URL 作为 Canvas URL 的凭据无效
【发布时间】:2012-01-17 04:57:57
【问题描述】:

我正在使用 Heroku 在 Facebook 上制作一个 php 应用程序。我想让 Heroku URL 成为我的应用程序中的 Canvas URL。但是,当我将 URL 放在 Basic 页面中,然后尝试通过转到 http://apps.facebook.com/status_related_test 打开我的应用程序时,画布显示“无效凭据”并重​​定向到应用程序的 URL https://young-warrior-3712.herokuapp.com。

任何想法我可能做错了什么或如何解决这个问题?

预计到达时间:
当我直接进入申请链接(https://young-warrior-3712.herokuapp.com)时,就可以登录成功了。只有当我尝试访问 Facebook 应用页面时,它才不起作用。

【问题讨论】:

    标签: php redirect heroku facebook-canvas


    【解决方案1】:

    norabora,我在其他帖子中找到了解决方案,经过长时间的努力,我终于成功了!这是我回复的帖子的链接: Answer to redirection in FB app canvas

    希望你会发现它有用... 祝你好运!

    【讨论】:

    • 太棒了!那解决了它。谢谢。 :)
    【解决方案2】:

    自己试过了,index.php 在页面加载的第 35 行无法获取 $token。

    $token = FBUtils::login(AppInfo::getHome());
    if ($token) {
    ...
    } else {
      // Stop running if we did not get a valid response from logging in
      exit("Invalid credentials");
    }
    

    使用http://developers.facebook.com/docs/authentication/ 中的过程来确定 FBUtils::login 失败的原因。

    或者,您可能想要使用已经具有“Facebook::getLoginUrl”等功能的 Facebook PHP SDK (http://developers.facebook.com/docs/reference/php/) 并绕过此错误。

    【讨论】:

    • 我提供的链接不是我的实际应用程序。这些都是例子。不过,我可以添加实际链接。用于测试目的。
    • 另外,你说的是什么程序?
    • Oauth2.0 程序。如果您已登录 facebook,则 URI:https://www.facebook.com/dialog/oauth?client_id=<your-client-id>&redirect_uri=https://apps.facebook.com/<your-app> 应返回 access_token,例如:?code=AQDyGFBUV[...]4eQKG4uU3m#_=_ - 您可以手动测试它。 PHP 代码在第一次加载时没有拾取它。
    【解决方案3】:

    转到AppInfo.php中的getHome()函数,找到以下行:

    return ($_SERVER['HTTP_X_FORWARDED_PROTO'] ?: "http") . "://" . $_SERVER['HTTP_HOST'] . "/"; 
    

    您必须将$_SERVER['HTTP_HOST'] 更改为您的画布页面网址:

    return ($_SERVER['HTTP_X_FORWARDED_PROTO'] ?: "http") . "://" . "apps.facebook.com/yourappname"  . "/"; 
    

    yourappname 应该是您的应用命名空间。

    请注意,如果您应用这些更改,您将无法使用应用程序的 heroku 页面,因为它将重定向到画布页面。

    【讨论】:

      【解决方案4】:

      我在尝试将我的应用程序包含在 Facebook 的页面选项卡中时遇到了类似的问题。问题的答案是编辑FBUtils.php。

      查找:

            echo("<script> window.location.href='" . $authorize_url . "'</script>");
      

      替换为:

      echo("<script> window.location.href='" . $authorize_url . "'</script>");
      

      这一行可以在 FBUtils.php 的第 94 行找到

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-09
        • 2012-01-16
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        • 2015-03-13
        • 2016-05-05
        相关资源
        最近更新 更多