【问题标题】:facebook oauth url problemsfacebook oauth 网址问题
【发布时间】:2012-11-15 21:40:44
【问题描述】:

我有以下代码,部分工作

<?php

   require_once 'facebook.php';

   $app_id = 'MY_APP_ID';
   $app_secret = 'MY_APP_SECRET';
   $app_url = 'http://mysite.com/index.php/';
   $scope = 'user_about_me';

   // Init the Facebook SDK
   $facebook = new Facebook(array(
     'appId'  => $app_id,
     'secret' => $app_secret,     
     'cookie' => true
   ));

   // Get the current user
   $user = $facebook->getUser();

   // If the user has not installed the app, redirect them to the Auth Dialog
   if (!$user) {
     $loginUrl = $facebook->getLoginUrl(array(
       'scope' => $scope,
       'redirect_uri' => $app_url,
     ));

     print('<script> top.location.href=\'' . $loginUrl . '\'</script>');
   } 

    $user_profile = $facebook->api('/me');
    echo "id: " . $user_profile['id'];   

 ?>

我在此页面上打印出正确的 ID,但在其他几个页面上我进入了 if(!$user)。

但是oauth url有错误:

API 错误代码:191 API 错误描述:指定的 URL 不属于应用程序 错误消息:无效的 redirect_uri:应用程序配置不允许给定 URL。

我在 stackoverflow 上发现了类似的问题,但似乎无法修复它:/

在我的设置下,我有相同的 url 和 $app_url

带有 facebook 的网站 -> 网站网址 -> https://www.facebook.com/pages/myappname/373671679372127/

编辑:我编辑了我的 app_url,所以它现在与我在应用设置下的画布 url 相同:http://mysite.com/index.php/

现在我没有收到错误消息。我只是得到一个空白窗口:(

编辑:在测试时偶尔清除 cookie 很重要。其他地方的一些非常随机的错误

【问题讨论】:

  • 在 Facebook Developers 中编辑应用程序时,您确定您的域填写了“App Domains”吗?如果您想在您的 web 应用程序中提供对应用程序的完全访问权限,请在此处填写您的主域,而不受是否有子域的限制。
  • 我的应用程序域是:mywebsite.com(没有 http 和任何 /)。 Facebook 一直在抱怨我在里面写了什么

标签: facebook oauth-2.0 facebook-login


【解决方案1】:

检查您是否在开发设置中为“使用 Facebook 登录的网站”设置了正确的 URL。这不能是 facebook.com 上的页面,它必须是指向您的域的链接。

另外,我会将代码的最后 2 行包含在“else”块中。 JavaScript 代码是错误的。这是正确的:

print('<script> top.location.href="' . $loginUrl . '";</script>');

(用双引号更容易理解,你错过了一个分号。即使它并不总是需要,你最好使用它)

试试这个代码:

$user = $facebook->getUser();

   // If the user has not installed the app, redirect them to the Auth Dialog
   if (!$user) {
     $loginUrl = $facebook->getLoginUrl(array(
       'scope' => $scope,
       'redirect_uri' => $app_url,
     ));
     print('<script> top.location.href=\'' . $loginUrl . '\';</script>');
   }
   else {
    echo 'User ID: ' . $user;
   }

另外,去掉“index.php”之后的斜线。那不是我的文件夹(我希望/猜测)。

【讨论】:

  • 在某些文件中,如果包含,我会出错,如果不包含,我会出错。在这个文件中我得到了它,但忘记发布它对不起。顺便说一句,我的应用程序秘密是假的 :) 但我会解决这个问题
  • 我确实回显了 URL 并将其放入我的地址栏中。但仍然给我空白页:(
  • 那么,loginurl 给你一个空白页?你在脸书上登录了吗?
  • 还要检查是否启用了沙盒模式,用登录的应用管理员进行测试。
  • 我已登录。我同时使用管理员和测试用户进行测试。沙盒模式已禁用
猜你喜欢
  • 1970-01-01
  • 2011-10-01
  • 2011-08-07
  • 2015-06-20
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2011-05-27
相关资源
最近更新 更多