【问题标题】:Facebook Error: An error occurred with app. Please try again laterFacebook 错误:应用程序发生错误。请稍后再试
【发布时间】:2013-06-21 02:31:10
【问题描述】:

我的代码一直运行到昨天,突然开始抛出错误。不知道发生了什么变化等等。它也基于来自Facebook Serve side authentication 的代码我还提到了其他标题相似的帖子,但尝试了他们提到的内容,但运气不佳。

这里是代码

<?php 

   $app_id = "my app id";
   $app_secret = "my app secret";
   $my_url = "http://apps.facebook.com/myappnamespace";

//在 my_url 中尝试使用 https //还尝试使用 http 和 https 的应用程序的直接路径,但效果不佳。 session_start(); $code = $_REQUEST["code"];

   if(empty($code)) {
     $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
     $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
       . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
       . $_SESSION['state'];

     echo("<script> top.location.href='" . $dialog_url . "'</script>");
   }

   if($_REQUEST['state'] == $_SESSION['state']) {
     $token_url = "https://graph.facebook.com/oauth/access_token?"
       . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
       . "&client_secret=" . $app_secret . "&code=" . $code;

     $response = file_get_contents($token_url);
     $params = null;
     parse_str($response, $params);

     $graph_url = "https://graph.facebook.com/me?access_token=" 
       . $params['access_token'];

     $user = json_decode(file_get_contents($graph_url));
     echo("Hello " . $user->name);
   }
   else {
     echo("The state does not match. You may be a victim of CSRF.");
   }

 ?>

【问题讨论】:

    标签: php facebook oauth facebook-oauth


    【解决方案1】:

    您似乎在重定向 URL 中使用了 HTTP,但您正在尝试使用 HTTPS 进行身份验证。把$my_url中的URL改成https://看看能不能用。

    【讨论】:

    • 这会将其发送到 facebook 画布之外,而不是加载到画布中。
    【解决方案2】:

    可能有其他方法可以解决此问题,但 php 方法通常对我不起作用。我将方法更改为 Javascript sdk 方式,事情变得更好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      相关资源
      最近更新 更多