2012-03-27 114 views
0

我使用流動代碼發佈到我的Facebook頁面,但是此代碼將用戶重定向到Facebook以獲取訪問令牌,如您所見。發佈到臉書頁面,但沒有連接到客戶端的臉書

$facebook=newFacebook(array(
'appId'=>$app_id, 
'secret'=>$app_secret, 
'cookie'=>true 
)); 

$user=$facebook->getUser(); 

if(($facebook->getUser())==0) 
{ 
header("Location:{$facebook->getLoginUrl(array('req_perms'=>'user_status,publish_stream,user_photos,offline_access,manage_pages'))}"); 
exit(); 
} 
else{ 
$accounts_list=$facebook->api('/me/accounts'); 
} 

foreach($accounts_list['data']as$account){ 
if($account['id']==123456789){ 
$access_token=$account['access_token']; 
} 
} 

$attachment['link']='article-url'; 

$facebook->api('/160145120705699/feed','POST',$attachment); 

問題是,Facebook已被禁止在伊朗。有沒有其他方式可以發佈到Facebook頁面,而無需在客戶端連接到Facebook?

+0

除非用戶使用代理,否則沒有辦法。 – F21 2012-03-27 09:04:52

+0

您可以隨時在伊朗境外使用服務器。 – Shomz 2012-03-27 09:06:25

+0

我的服務器在伊朗境外。 – Hamid 2012-03-27 09:10:04

回答

0

是的,但它需要用戶的活動訪問令牌,因爲offline_access不再有效,所以可以擴展它。所以你必須在服務器端存儲訪問令牌,並從那裏訪問Facebook。因此,不是將用戶重定向到令牌,而是將其從數據庫中獲取,然後將其設置爲setAccessToken()的$ facebook對象並照常發佈

0

該帖子是否似乎來自用戶的Facebook?用戶甚至是否有 Facebook?否則,你可能會得到一個訪問令牌服務器端(代表你,或者應用程序或頁面本身等)併發布該服務器端(也是服務器端,不要通過線路發送令牌,只有用戶的文本!)。所有帖子看起來都來自相同的頁面/應用/用戶,但至少帖子內的文字來自伊朗。

我也在考慮詢問用戶的Facebook用戶名和密碼以及來自服務器的登錄信息,但這不僅非常非常規且不安全,它也可能不起作用,因爲Facebook在用戶登錄時將會產生懷疑來自完全不同的地理位置。

+0

頁面和應用程序是我的,我們以頁面管理員的身份發佈。爲什麼用戶需要Facebook帳戶? 我如何獲得訪問令牌服務器端? – Hamid 2012-03-27 09:33:32

+0

你可以申請我的代碼嗎? – Hamid 2012-03-27 09:39:13