2013-04-12 127 views
1

我使用客戶端SDK登錄和服務器端PHP SDK'牆貼'使用圖形api觸發的行動(我用它與offline_access,但現在我知道其棄用)。Facebook擴展訪問令牌服務器端與客戶端登錄

如何獲得擴展的訪問令牌使用客戶端SDK,以便我可以使用在服務器端擴展的標記在服務器端,

我知道一些答案有喜歡here,但他們使用服務器端登錄並獲得$ _REQUEST ['code']的擴展令牌,他們得到的迴應,

我有什麼辦法可以使用客戶端登錄獲取$ _REQUEST ['code']的值嗎?

更新:

我的客戶端登錄代碼支持的OAuth:

FB.init({ 
    appId  : 'MYAPPID', // App ID 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true, // parse XFBML 
    oauth  : true // enable OAuth 2.0 
}); 

FB.login(function() { 
    FB.api('/me', {'fields': "some coma seperated fields"}, 
     function(response){ 
     //Function that sends data to server 
     Pass_data_to_server(response); 
     });  
}, scope:'some scope values'); 

服務器端代碼:

<?php 
    $settings = array 
    (
    'appId' => FB_APP_ID, 
    'secret' => FB_APP_SECRET, 
    'cookie' => true, 
    'oauth' => true 
);  

    // Get facebook object from facebook sdk class 
    $facebook = new Facebook($settings); 

    if ($facebook) 
    {        
    $user_id = $facebook->getUser();  

    $facebook->setExtendedAccessToken(); //long-live access_token 60 days 
    $token  = $facebook->getAccessToken();    
    try 
    {      
     $response = $facebook->api('me/og.like', 'POST',{ $MYCUSTOMDATA}); 
     return $response; 
    } 
    catch (FacebookApiException $e) 
    { 
     print_r($e) 
     return false;   
    }   
    } 
?> 
+0

您是否在服務器端也有訪問令牌,考慮到您從服務器端發佈在用戶牆上的事實 –

+0

@AnveshSaxena是的,我有一個訪問令牌,但是我可以發佈一次後很快就會過期,但是對於下一篇文章,它給了一個錯誤「必須使用一個活動的訪問令牌」 – Maddy

回答

1

您可以extend使用Facebook PHP SDK您的訪問令牌方法

setExtendedAccessToken() 

這將自動調用終點

https://graph.facebook.com/oauth/access_token?    
client_id=APP_ID& 
client_secret=APP_SECRET& 
grant_type=fb_exchange_token& 
fb_exchange_token=EXISTING_ACCESS_TOKEN 

那麼您可以保存此訪問令牌授權爲接下來的60天延長請求你的短期延長訪問令牌。

+0

我已經更新了我的客戶端和服務器端代碼在我的問題中,我使用的是從github更新的PHP sdk,仍然無法使它工作 – Maddy

+0

即使在擴展令牌後,你是否收到了一些錯誤? –

+0

是的,正如我告訴過你,我可以使用訪問令牌發佈一次,但對於下一篇文章,它會返回錯誤,指出「必須使用有效的訪問令牌」。 – Maddy

相關問題