2012-11-15 51 views
0

我有下面的代码,这是工作的一部分的Facebook的OAuth URL问题

<?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,但在其他几页,我去到如果(!$用户) 。

但有在OAuth网址的错误:

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

我发现这里的计算器类似的问题,但似乎无法修复它:/

在我的设置,我有相同的URL和$ APP_URL

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

编辑:编辑我APP_URL,所以现在是一样的下应用程序设置我的画布网址:http://mysite.com/index.php/

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

编辑:Importent测试时清除Cookie一次,同时否则一些非常随机错误的地方

+0

在Facebook开发人员中编辑应用程序时,您确定您的域名已填入“应用程序域名”吗?如果你想在你的web应用程序中完全访问你的应用程序,那么填写你的主域名,而不要限制你的子域名。 –

+0

我的应用程序域是:mywebsite.com(没有http和任何/)。 Facebook不停地抱怨我在那里写的东西 – Pavenhimself

回答

1

检查,如果你在设置“网站与Facebook登录”正确的URL dev的设置,这不能是facebook.com上的页面,它必须是链接到你的域名。

此外,我会把你的代码的最后2行放在“else”块中。这是正确的:

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

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

试试这个代码:

$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”后摆脱斜线。这不是我的文件夹(我希望/猜测)。

+0

在一些文件中,如果包含错误,我会收到错误消息,如果没有收到,我会收到错误消息。 在这个文件中,我明白了,但忘了发帖抱歉。 我的应用程序的秘密是btw假:)但我会修复该 – Pavenhimself

+0

我确实呼应URL并将其放置到我的地址栏。但仍然给我空白页:( – Pavenhimself

+0

所以,loginurl给你一个空白页?你在Facebook上登录吗? – luschn