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



我正在使用Facebook SDK在我自己的Facebook页面上发布一些测试墙帖子。我想要的是使用 PHP CRON 脚本每 8 小时在我的 Facebook 页面上发布一次,为此我必须绕过 Facebook 登录对话框页面,那么有谁知道从命令行或广播进行身份验证的方法?

作为页面进行身份验证将为您提供一个访问令牌,您可以将其保存在数据库中,然后使用 PHP 执行各种任务。

这对于使用 cron 执行各种操作很有帮助,例如安排帖子、维护多个页面、一次发布到多个页面、使用 Graph API 上传照片和许多其他活动。查看他们的文档以获取有关如何执行此操作的更多信息。

注意:您只需对您的应用程序进行身份验证一次并保存您的页面访问令牌密钥,完成此操作后,您无需再次登录,您只需使用访问令牌在页面上执行各种任务即可。

Facebook

为用户提供访问令牌以使用 Facebook 应用程序。第一次,用户必须通过Facebook登录,登录网站后,它将请求访问应用程序的权限。一旦用户接受,那么Facebook将返回一个代码网址。您必须获取代码并使用它来获取访问令牌

使用以下代码

$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 墙上发布消息

$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;
}

试试这个.如果有任何问题,请告诉我

不,没有办法绕过Facebook登录对话框页面,但对于您的情况,您可以检索扩展访问密钥并使用它发布到墙上。您可以使用以下代码通过 PHP SDK 检索访问令牌

$extendedToken = $facebook->setExtendedAccessToken();
$facebook->api('<PAGE_ID>?fields=access_token');

然后只需使用

$facebook->setAccessToken();

以发布到您的主页。请记住在生成扩展访问令牌之前获取权限。

最新更新