2013-02-15 22 views
1

我正在開始一個博客,我想爲博客製作一個'FacebookStatusApp'。 它只需要獲得我的最新狀態,並將其請求發送到我的翻譯頁面。 我可以得到我最新的飼料,但問題是accesstoken。 我發現了一種每9分鐘刷新一次我的access_token的方法。這是一個所謂的網站:(PHP)抓取AccessToken並在未經許可的情況下提供。 (sorta)

https://mywebcron.com/

這個網站將打電話給你的網址每隔X分鐘。我選擇了9分鐘。

我的更新代碼非常簡單:

<?php 
$file = file_get_contents("fbat.txt"); 
$token = $file; 

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=100000280644272&client_secret=secret&grant_type=fb_exchange_token&fb_exchange_token=".$token; 

$c = curl_init(); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($c, CURLOPT_URL, $token_url); 
$contents = curl_exec($c); 
$err = curl_getinfo($c,CURLINFO_HTTP_CODE); 
curl_close($c); 

$paramsfb = null; 
//parse_str($contents, $paramsfb); 
echo $contents; 
?> 

「Fbat.txt」 包含當前的accessToken。

但我需要爲我的帳戶client_secret。 而我無法獲得我的Facebook帳戶的AccessToken:/

所以我的解決方案是創建一個新的應用程序使用我的ClientID和他的ClientSecret與'圖形探險家'生成access_token。

所以我的問題是: 我怎樣才能得到我的最新狀態和我的access_token。 ?

如果有一個很好的選擇(例如使用APP),我也可以這樣做。

好了,我希望你明白我的問題:P

+0

啊,我改變了應用程序使用graphExplorer,然後生成一個密鑰。這工作!再生的作品。但是當我註銷時,會話密碼會丟失嗎? – 2013-02-15 11:51:51

回答

1

首先,你需要飼料被公開。下面的代碼應該做的其餘部分:

function fb_setup(){ 

    $app_id = 'APP_ID'; 
    $app_secret = 'APP_SECRET'; 

    $response = file_get_contents('https://graph.facebook.com/oauth/access_token?type=client_cred&client_id='.$app_id.'&client_secret='.$app_secret); 

    $token = str_replace('access_token=', '', $response); 

    $node = "PAGE_ID(if not a page just use 'me')"; 
    $fields = array(); 
    $fields[] = 'feed'; 
    $fields[] = 'likes'; 

    $response = file_get_contents('https://graph.facebook.com/'.$node.'?fields='.implode(',', $fields).'&access_token='.$token.''); 

    $arr = json_decode($response); 

    $data['node'] = $node; 
    $data['arr'] = $arr; 

    return $data; 

} 
function last_post(){ 

    $ret = fb_setup(); 
    $arr = $ret['arr']; 
    $node = $ret['node']; 

    $feed = $arr->feed->data; 

    $ret = ""; 
    $ret .= "<div id='last-fb-post'>"; 
    $item = $feed[0]; 

    $message = str_replace("\n","</p><p>",$item->message); 
    $likes = (!$item->likes->count) ? '0' : $item->likes->count; 
    $coms = $item->comments->count; 
    $ex_id = explode('_',$item->id); 
    $id = $ex_id[1]; 

    $href = 'http://www.facebook.com/permalink.php?story_fbid='.$id.'&id='.$node; 

    $ret .= '<a class="title" target="_blank" href="'.$href.'">Last Update: <u>' . date("F j, Y",strtotime($item->created_time)) . '</u></a>'; 
    if($item->type == 'photo'){ 
     $ret .= '<div class="fb_img"><a target="_blank" href="'.$href.'"><img src="'.$item->picture.'"/></a></div>'; 
    } 
    $ret .= "<p class=\"msg\">"; 
    $ret .= $message; 
    $ret .= "</p>"; 
    $ret .= "<p class='likes'><a htarget=\"_blank\" href=\"$href\">$likes</p>"; 



    $ret .= "</div>"; 

    return $ret; 

} 
+0

我明白你做了什麼。但你不能在httpS://鏈接上使用:file_get_contents。所以我會用捲曲。謝謝! – 2013-02-15 22:03:11

+0

好unos問題。我可能說錯了,但我需要'狀態'字段,這並不那麼容易:/我設法做了一個工作,但由於某種原因,它不更新。我如何向您發送源代碼? BTW:它只在webhost上不更新。它在我的本地機器上執行 – 2013-02-15 22:16:14

+0

它可能是一個引人注目的問題?你可以使用帶有https鏈接的file_get_contents,在你調用函數之前嘗試'ini_set('allow_url_fopen',1)''。 – chrisboustead 2013-02-17 04:15:05

相關問題