【问题标题】:(ERROR) Trying to get property of non-object (Facebook PHP SDK)(错误)试图获取非对象的属性(Facebook PHP SDK)
【发布时间】:2013-04-11 06:35:26
【问题描述】:

我正在尝试回显我的名字,但出现错误:尝试获取非对象的属性。请帮忙。尽管获取应用访问令牌没有问题,但获取用户访问令牌也有问题。

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
</head>
<body>
<?php 

require_once('facebook.php');
$config = array();
$config['appId'] = "MY_APP_ID";
$config['secret'] ="MY_APP_SECRET";
$facebook = new Facebook($config);

$app_id = "MY_APP_ID";
$app_secret = "MY_APP_SECRET";
$my_url = "http://localhost:8080/samplewebsite/index.php/";



$code = $_REQUEST['code'];

if(empty($code))
{
    $_SESSION['state'] = md5(uniqid(rand(),TRUE));
    $dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
               . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" . $_SESSION['state']
               . "&scope=publish_actions,read_stream";
    header("Location: " . $dialog_url);
}
else 
{
    echo "Hello, your OAuth code is " . $code . "<br>";           
}

if ($_REQUEST['state'] == $_SESSION['state'])
{
    $facebook->api('oauth/access_token',array(
       'client_id' => $app_id,
       'client_secret' => $app_secret,
       'type' => 'client_cred',
       'code' => $code,
    ));

    $token = $facebook->getAccessToken();
    echo "<br>" . "Hello, Your access_token is: " .  $token;


    $graph_url = "https://graph.facebook.com/me?access_token=" . $token;
    //$user = json_decode(file_get_contents($graph_url));
    //echo $user->name;

    function curl($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
        curl_setopt($ch, CURLOPT_URL, $url);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;

    }
    $user = json_decode(curl($graph_url));
    echo $user->name;
}




?>
</body>
</html>

【问题讨论】:

    标签: php facebook properties oauth


    【解决方案1】:

    您正在尝试echo $user-&gt;name,但默认情况下json_decode 不会返回对象。它返回一个关联数组,除非您将 TRUE 作为第二个参数传入。

    所以如果你改变:

    $user = json_decode(curl($graph_url));

    到:

    $user = json_decode(curl($graph_url), TRUE);

    它可能会按照您的意愿工作。如果不是,请尝试查看您的 curl() 调用返回的内容,然后查看 $user 实际包含的内容,例如 var_dump()

    【讨论】:

    • 感谢您的帮助 SilverSnake。非常感谢您的努力。但是,我的编码仍然无法正常工作。
    • 好吧,如果你分解它并仔细检查每一步的数据?首先查看 $graph_url 以确保它是正确的,然后只运行 curl() 并查看它返回的内容,然后 json_decode 它并查看它给了你什么?确保在途中检查错误。
    • 好的,我会再次检查我的 $graph_url。
    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    相关资源
    最近更新 更多