2013-04-28 160 views
1

我正在試驗Facebook的長時間訪問令牌,我發現長壽命的訪問令牌可用於不同的用戶。這是正常的嗎?Facebook長期訪問令牌是否可用於多個用戶?

我使用Facebook PHP SDK v3.2.2和Yii。這裏是我的代碼從App_User_1

Yii::import('application.vendors.facebook.Facebook'); 
$facebook = new Facebook(
    array(
     'appId' => Yii::app()->params['facebookApi'], 
     'secret' => Yii::app()->params['facebookSecretCode'], 
     'cookie' => true, 
    ) 
); 
$loginUrl = $facebook->getLoginUrl(array('display' => 'touch', 'scope' => 'publish_actions')); 
$fbUser = $facebook->getUser(); 
if(!empty($fbUser)) 
{ 
    $facebook->setExtendedAccessToken(); //long-live access_token 60 days 
    $access_token = $facebook->getAccessToken(); 
    exit(print_r($access_token)); 
} 

產生長壽命的訪問令牌這裏是我的代碼來測試張貼到App_User_1的Facebook牆上。

$message = "A message"; 
$link = "http://www.alink.com"; 
$picture = "http://www.alink/image.png"; 
$sendTo = "`**App_User_1**`"; 
$access_token = "xxxxxxxxxx"; 

Yii::import('application.vendors.facebook.Facebook'); 
$facebook = new Facebook(
    array(
     'appId' => Yii::app()->params['facebookApi'], 
     'secret' => Yii::app()->params['facebookSecretCode'], 
     'cookie' => true, 
    ) 
); 

$attachment = array('message' => $message, 'link' => $link, 'picture' => $picture); 
$api = "/$sendTo/feed/?access_token='.$access_token,"; 
$result = $facebook->api($api,'post', $attachment); 

我有2個測試應用程序用戶。如果我替換App_User_1的訪問令牌,我也可以發佈到App_User_2的Facebook Wall。這是正常的嗎?

+0

如果發佈您的意思是以app_user_1的用戶名發佈到app_user_2的牆上,那麼是的。 – 2013-04-28 14:42:44

+0

嗨@JoachimIsaksson,糾正我,如果我錯了。但是,並不是每個用戶獨有的長期訪問令牌?謝謝。 – 2013-04-28 14:48:50

+2

是的,但app_user_1可以發佈到app_user_2的牆上,如果他們是朋友的話。至少我的朋友每年都會在我的生日發帖;) – 2013-04-28 14:50:22

回答

0

我想我可能一直在做這個錯誤的方式。使用PHP SDK,api方法不會將access_token識別爲其路徑參數的一部分。 (e.g. /me/feed/?access_token=blah

相反,訪問令牌應該在數組格式的可選參數下指定。

以下是我的工作方式。

$facebook_uid = '1234567890'; 
//Initialize array for the params parameter 
$fb_data = array(); 
$fb_data['access_token'] = 'xxxxxxxxxx'; 
$fb_data['message'] = 'A test message'; 
$facebook->api('/'.$facebook_uid.'/feed/', 'post', $fb_data); 

嘗試將訪問令牌與其他應用用戶的訪問令牌交換,並且根本不指定access_token。兩者都會導致錯誤(#200)用戶尚未授權應用程序執行此操作。

我也推薦使用Facebook的這個工具來驗證您的應用程序正確生成了access_token。 https://developers.facebook.com/tools/debug

相關問題