0

YiiフレームワークとYii拡張機能yiinstagramを使用してInstagramアプリを作成しようとしています。Instagramに正常に接続できますが、現在のユーザーのプロファイルデータをすべて取得できません。これが、Instagramに接続してユーザーデータを取得するためにコントローラーに配置したコードです。

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>    

子オブジェクト"counts"(media、followed_by、follows)の値は、セッション変数の残りのデータが表示されていても表示されません。Yii :: app()-> session ['InstagramUser']のvar_dumpを実行しましたが、これが取得したものです。

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" }

「counts」子オブジェクトは「id」の直前に表示されているはずです。表示する「counts」子オブジェクトから値を取得するにはどうすればよいですか?私はこの3日間苦しんでいますので、どんな助けでも大歓迎です。ありがとう。

これが役立つかどうかはわかりませんが、同じエンドポイント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"
}

}

4

1 に答える 1

0

基になる Instagram.phpのソースを見ると、 isの戻り値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";
    }
}
于 2013-03-11T16:52:19.573 に答える