2013-07-30 68 views
0

問題:我正在使用Instagram Api,並使用OAuth進行身份驗證。我的問題是,我無法弄清楚如何保持我的會話活着。最終它將到期,不再從服務中抓取照片。如何保持OAuth會話不動

背景:我在自定義管理面板中創建了一個設置頁面,該頁面包含客戶端ID和客戶端密鑰。它將這些值保存到我的數據庫中,我的應用程序使用它們連接到Api。我有一個按鈕,單擊「保存並連接」,它會更新我的數據庫,然後向Instagram Api請求授權令牌。所有這些都很好。

我需要:保持會話無限期或儘可能長。我從api緩存結果集,所以我不做太多請求,我的訪問令牌存儲在php會話中。但是,當新用戶訪問並且在其會話中沒有此令牌時,緩存過期並且會話過期後,照片將不再可用?

期待聽到一些可能的解決方案。如果您需要更多信息或者我的問題不明確,請告訴我。

感謝,

扎克

+0

你就不能要求對Instagram的客戶一個新的令牌當令牌過期? – Manuras

+0

我可以,但我相信這會將用戶發回到我的重定向uri,它位於管理面板中。 – zcreative

回答

0

您應該保存在一個數據庫或服務器上的最近的訪問令牌,並與保存的令牌的請求。 Instagram訪問令牌是長期存在的(至少現在是這樣)。隨意使用包裝我有here。除了第一次獲得令牌之外,這樣的會話不是問題。

$insta = new Instagram(array(
       'client_id' => $client_id, 
       'client_secret' => $secret, 
       'redirect_uri' => $redirect_uri 
      )); 

if(!$insta->isAuthenticated()){ 
      /* Not logged in */ 
      $login_url = $this->insta->getLoginUrl(array(
       'scope' => $scope, 
      )); 
      header("Location: ".$login_url."); 
     } 


/* Save the token */ 
if($this->insta->getToken()) 
{ 
    $token_to_save = $this->insta->getToken(); 
} 

然後使用保存的令牌:

$ig_saved_token = getTokenFromDBSomewhere();  
$insta->setToken($ig_saved_token); // Set the saved token 
$r = $insta->api('users/self/media/recent'); // Request works with saved token! 
+0

謝謝你這個方法很好用! – zcreative