2013-03-10 61 views
0

我正嘗試使用Yii框架和Yii擴展yiinstagram創建Instagram應用程序。我可以成功連接到Instagram,但無法檢索當前用戶的所有個人資料數據。以下是我在控制器中連接到Instagram並檢索用戶數據的代碼。使用Yii PHP框架無法從Instagram中檢索子對象JSON響應

public function actionIndex() 
{             
    $instagram = Yii::app()->instagram->getInstagramApp(); 
    if (isset($_GET['code'])) 
    { 
     $accessToken=$instagram->getAccessToken(); 
     Yii::app()->session['InstagramAccessToken']= $accessToken; 
     $instagram->setAccessToken(Yii::app()->session['InstagramAccessToken']); 
     $instagramUser=$instagram->getCurrentUser(); 
     Yii::app()->session['InstagramUser'] = $instagramUser; 
     $userFeed = $instagram->getUserFeed(); 
     $this->render('index', array('userFeed'=>$userFeed)); 
    } 
    else 
    { 
    echo "Could not retrieve code variable"; 
    } 
} 

我服用含有當前用戶的Instagram的個人資料數據的會話變量,並把它與另一個控制器關聯這個PHP頁面:從子對象

<?php 
/* @var $this LoginController */ 
$this->pageTitle=Yii::app()->name . ' - Instagram Profile'; 
?> 
<h1>Instagram Profile</h1> 
<div class="row"> 
    <div class="span3"><img src="<?php echo Yii::app()->session['InstagramUser']->profile_picture;?>"/></div> 
<div class="span7"> 
    <ul> 
     <li><b>username:</b><?php echo Yii::app()->session['InstagramUser']->username;?></li> 
     <li><b>full name:</b><?php echo Yii::app()->session['InstagramUser']->full_name;?></li> 
     <li><b>bio:</b><?php echo Yii::app()->session['InstagramUser']->bio;?></li> 
     <li><b>website:</b><?php echo Yii::app()->session['InstagramUser']->website;?></li> 
     <li><b>photos:</b><?php echo Yii::app()->session['InstagramUser']->counts->media;?></li> 
     <li><b>followers:</b><?php echo Yii::app()->session['InstagramUser']->counts->followed_by;?></li> 
     <li><b>follows:</b><?php echo Yii::app()->session['InstagramUser']->counts->follows;?></li> 
    </ul> 
    <?php echo var_dump(Yii::app()->session['InstagramUser']); ?>   
</div>  

值即使來自會話變量的其餘數據顯示,「計數」(媒體,followed_by,下面)也不會顯示。我做的Yii的的var_dump ::應用程序() - >會話[「InstagramUser」],這是我得到了什麼:

object(stdClass)#22 (6) { 
["username"]=> string(9) "mdailey77" 
["bio"]=> string(36) "photographer and avid Photoshop user" 
["website"]=> string(25) "http://www.mattdailey.net" 
["profile_picture"]=> string(72) "http://images.instagram.com/profiles/profile_3586295_75sq_1345911013.jpg" 
["full_name"]=> string(14) "Matthew Dailey" 
["id"]=> string(7) "3586295" } 

的「罪狀」子對象應該表現出了「身份證」之前。我怎樣才能從「計數」子對象的值顯示?過去三天我一直在苦惱,所以任何幫助將不勝感激。謝謝。

不知道這會有所幫助,但使用相同的端點URL這是我開始使用Instagram的自己的API控制檯響應:

{ 
"meta": { 
"code": 200 
}, 
"data": { 
    "username": "mdailey77", 
    "bio": "photographer and avid Photoshop user", 
    "website": "http://www.mattdailey.net", 
    "profile_picture": "http://images.instagram.com/profiles/profile_3586295_75sq_1345911013.jpg", 
    "full_name": "Matthew Dailey", 
    "counts": { 
      "media": 167, 
      "followed_by": 24, 
      "follows": 30 
    }, 
    "id": "3586295" 
} 

}

回答

0

望着source of the underlying Instagram.php,它看起來像返回getCurrentUser()是從認證中獲得的。查看Instragram docs,身份驗證請求的返回數據不包含計數。

你問題的結束已經得到了JSON看起來就像你去/users/user-id/

貌似等價物,這將是使用getUser($id),而不是getCurrentUser()。你顯然需要提供相應的用戶ID這樣做(你應該從getCurrentUser()返回

我想你會想是這樣的:

public function actionIndex() 
{             
    $instagram = Yii::app()->instagram->getInstagramApp(); 
    if (isset($_GET['code'])) 
    { 
     $accessToken=$instagram->getAccessToken(); 
     Yii::app()->session['InstagramAccessToken']= $accessToken; 
     $instagram->setAccessToken(Yii::app()->session['InstagramAccessToken']); 
     $loggedInUser=$instagram->getCurrentUser(); 
     $instagramUser=$instagram->getUser($loggedInUser->id); 
     Yii::app()->session['InstagramUser'] = $instagramUser; 
     $userFeed = $instagram->getUserFeed(); 
     $this->render('index', array('userFeed'=>$userFeed)); 
    } 
    else 
    { 
    echo "Could not retrieve code variable"; 
    } 
} 
+0

您的解決方案工作厄尼。非常感謝,我懷疑這與數據的來源有關,但我認爲我使用了錯誤的設置。 – mdailey77 2013-03-12 14:27:45