Php 如何在没有登录对话框页面的情况下验证facebook sdk?

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 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天),然后将其保存到数据库中。