在客户端不连接到facebook的情况下发布到facebook页面


Post to facebook page without conecting to facebook in client-side

我使用流动代码发布到我的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页面?

是的,但它需要用户的活动访问令牌,该令牌可以扩展,因为offline_access不再工作。所以你必须在服务器端存储访问令牌,还可以从那里访问facebook。因此,您将从数据库中获取令牌,然后使用setAccessToken()将其设置为$facebook对象,并像往常一样发布

,而不是重定向用户以获取令牌

帖子必须看起来来自用户的Facebook吗?用户是否拥有Facebook?否则,你可以获得一个访问令牌服务器端(代表你、应用程序或页面本身等),并用它发布(还有服务器端,不要通过有线发送令牌,只发送用户的文本!)。所有帖子看起来都来自同一个页面/应用程序/用户,但至少帖子中的文本来自伊朗。

我也在考虑向用户询问Facebook用户名和密码,并从服务器登录,但这不仅非常不传统和不安全,而且可能不会起作用,因为当用户从完全不同的地理位置登录时,Facebook会感到怀疑。