$ facebook-> getUser()返回零

时间:2012-11-14 08:50:12

标签: facebook facebook-graph-api

我对Facebook PHP API有疑问。这是我的代码:

<?php
$facebook = new Facebook(array(
    'appId'  => 'MY_APP_ID',
    'secret' => 'MY_SECRET'
));

$uid = $facebook->getUser();
if ($uid) {
    try{
        $user = $facebook->api('/me');
    } catch (Exception $e){
        error_log($e);
        $user = null;
    }
}

if (!$uid) {
    $login_url = $facebook->getLoginUrl(array(  
        'next' =>   'http://www/mywebsite.com', 
        'redirect_uri' =>   'http://www/mywebsite.com', 
        'scope' => 'email,publish_stream,user_birthday,user_location'
    ));

    echo '<a href="'.$login_url.'">TEST TO CONNECT</a>';
} else {
    print_r($user);
}

我继续使用TEST TO CONNECT这一行,所以看起来像$ facebook-&gt; getUser();总是返回0.任何想法?

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

你能看到任何错误吗?您是否被带到登录页面并返回?或者一切都好吗?

代码中的错误似乎位于if (!$uid)部分下,然后您生成登录网址。

我真的找不到那里的'next' => 'http://www/mywebsite.com',

尝试使用:

$loginUrl = $facebook->getLoginUrl(
                array(
                   'scope'         => 'publish_stream,read_friendlists,user_photos',
                   'redirect_uri'  => $redirecturi
                )
            );

另外,不要忘记包含Facebook PHP SDK文件。

require_once("facebook.php");//or full location if the file is placed elsewhere.

答案 1 :(得分:0)

如果这是您的完整代码,那么有一个主要问题:您在开头没有包含facebook类:

include 'Facebook.php';

还要确保您的App ID和App Secret正确无误。并使用“publish_actions”而不是“publish_stream”。

如果这没有帮助,请调试。 facebook通常会告诉你哪里错了。

答案 2 :(得分:0)

我遇到了类似的问题。我搜索了整个互联网,访问了博客,论坛,但一切都是徒劳的。所以,我决定使用facebook的JS SDK而不是PHP SDK。当我这样做时,JS SDK通过说我的帐户是从其他浏览器访问来扩展登录过程。这个扩展显示没有出现在php sdk端。我以为我应该回复并尝试再次使用PHP SDK ......并且bamn工作正常。

所以基本上它不是代码的错误而是fb的登录过程会引起这个错误。你有两个选择:i)要求你的朋友参加测试登录ii)使用js sdk