我使用流动的代码发布到我的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 :(得分:0)
是的,但它需要用户的活动访问令牌,因为offline_access不再有效,所以可以扩展。因此,您必须在服务器端存储访问令牌,并且还可以从那里访问Facebook。因此,不是重定向用户获取令牌,而是从数据库中获取它,然后使用setAccessToken()将其设置为$ facebook对象,并照常发布
答案 1 :(得分:0)
该帖子是否必须来自用户的Facebook?用户是否拥有 Facebook?否则,您可以获得访问令牌服务器端(代表您,或应用程序或页面本身等)并使用它发布(也是服务器端,不要通过网络发送令牌,只发送用户的文本!)。所有帖子似乎都来自同一个网页/应用/用户,但至少帖子中的文字来自伊朗。
我还在考虑向用户提供Facebook用户名和密码以及从服务器登录,但这不仅非常传统且不安全,它也可能无法正常工作,因为当用户登录时Facebook会有疑问一个完全不同的地理位置。