Php 如何在没有登录对话框页面的情况下验证facebook sdk?
我正在使用Facebook SDK在我自己的Facebook页面上发布一些测试墙帖子。我想要的是使用PHP CRON脚本每8小时在我的facebook页面上发布一次,为此我必须绕过facebook登录对话框页面,那么有人知道如何通过命令行或空中验证吗 将为您提供一个访问令牌,您可以将其保存在数据库中,然后使用PHP执行各种任务 这有助于使用cron做各种事情,例如安排发布时间、维护多个页面、一次发布到多个页面、上传照片以及使用cron进行许多其他活动。查看他们的文档,了解更多有关如何操作的信息Php 如何在没有登录对话框页面的情况下验证facebook sdk?,php,facebook,cron,facebook-authentication,Php,Facebook,Cron,Facebook Authentication,我正在使用Facebook SDK在我自己的Facebook页面上发布一些测试墙帖子。我想要的是使用PHP CRON脚本每8小时在我的facebook页面上发布一次,为此我必须绕过facebook登录对话框页面,那么有人知道如何通过命令行或空中验证吗 将为您提供一个访问令牌,您可以将其保存在数据库中,然后使用PHP执行各种任务 这有助于使用cron做各种事情,例如安排发布时间、维护多个页面、一次发布到多个页面、上传照片以及使用cron进行许多其他活动。查看他们的文档,了解更多有关如何操作的信息
注意:您只需对应用程序进行一次身份验证并保存页面访问令牌密钥,完成此操作后,您无需再次登录,您只需使用访问令牌即可在页面上执行各种任务。不,无法绕过Facebook登录对话框页面,不过,对于您的情况,您可以检索扩展访问密钥,并将其用于张贴到墙上。 您可以使用PHPSDK使用以下代码来检索访问令牌
$extendedToken = $facebook->setExtendedAccessToken();
$facebook->api('<PAGE_ID>?fields=access_token');
$extendedToken=$facebook->setExtendedAccessToken();
$facebook->api(“?fields=access_token”);
然后简单地使用
$facebook->setAccessToken()
发布到您的页面。请记住在生成扩展访问令牌之前先获得权限。Facebook为用户提供访问令牌以使用Facebook应用程序。第一次,用户必须通过facebook登录,登录到该网站后,它将请求访问该应用程序的权限。一旦用户接受,facebook将通过url返回代码。您必须获取代码并使用它来获取访问令牌
$extendedToken = $facebook->setExtendedAccessToken();
$facebook->api('<PAGE_ID>?fields=access_token');
通过使用以下代码
$url = "https://graph.facebook.com/oauth/access_token?client_id=". $yourappId ."&redirect_uri=". urlencode($this->redirect_url) ."&client_secret=". $youappsecret."&code=". $code;
$auth_token = $this->getContents($url);
$str = explode('=',$auth_token);
$token = explode('&expires', $str[1]);
在这里,$token将具有用户的访问令牌,您可以将该令牌存储在您的本地数据库中,并使用该令牌向facebook墙发布消息。这很简单。。就这些
在墙上留言
$fb_id = "User_fb_id"
$access_token = "User_Access_Token_Take by Above code"
$msg = "Message_to_post"
$img_path = "Image_Path"
$facebook = new Facebook(array(
'appId' => $this->appId,
'secret' => $this->secret,
'cookie' => true));
if($msg != NULL) {
$attachment = array(
'message' => $msg,
'name' => 'NHM',
'picture' => $img_path);
}
try {$result = $facebook->api('/'. $fb_id . '/feed/',
'post',
$attachment);
if(isset($result['id']))
return true;
else
return false;
} catch(FacebookApiException $e) {
return $e->getMessage();
}
在这里,您必须使用Facebook用户Id。要获取用户Id,请使用以下代码
$url = "https://graph.facebook.com/me?access_token=". $access_token;
$userInfo = $this->getContents($url);
$userInfo = json_decode($userInfo, true);
public function getContents($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec ($ch);
curl_close ($ch);
return $content;
}
试试这个。让我知道如果有任何问题什么是$this->getContents我在facebook中找不到任何类似的方法名,SDKI添加了函数getContents。很抱歉错过了这个函数。您可以直接放置代码而不是调用函数。这给了我错误:{“error”:{“message”:“redirect_uri不是绝对uri。请检查RFC 3986.,“type”:“OAuthException”,“code”:191}传递画布url时出现问题。在Facebook应用程序和你的代码中检查你的画布url。。在此处提供url。是的,它将过期。但您可以通过进行API调用来扩展令牌,并获得长寿命令牌(最大有效期为60天),然后将其保存到数据库中。