5

I am using Facebook SDK to post some test wall post on my own Facebook page. What i want is to post on my facebook page every 8 hours using PHP CRON script and for that i have to bypass the Facebook login dialog page, So does anyone know the way to authenticate from command line or on air?

4

3 回答 3

2

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

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

注意:您只需对您的应用程序进行一次身份验证并保存您的页面访问令牌密钥,一旦您这样做,您就不必再次登录,您只需使用您的访问令牌在您的页面上执行各种任务。

于 2012-10-10T13:00:24.457 回答
2

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

通过使用以下代码

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

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

尝试这个 。让我知道如果有任何问题

于 2012-10-10T13:03:09.467 回答
-1

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

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

然后只需使用

$facebook->setAccessToken();

发布到您的页面。请记住在生成扩展访问令牌之前获得许可。

于 2012-10-10T13:02:33.857 回答