如何保持OAuth会话活动

时间:2013-07-30 17:38:10

标签: api oauth kohana instagram

问题:我正在使用Instagram Api并使用OAuth进行身份验证。我的问题是我无法弄清楚如何让我的会话保持活力。最终它将过期,不再从服务中获取照片。

背景:我在自定义管理面板中创建了一个设置页面,该页面会接收客户端ID和客户端密钥。它将这些值保存到我的数据库中,我的应用程序使用它们连接到Api。我有一个按钮,您单击“保存并连接”,它会更新我的数据库,然后从Instagram Api请求auth令牌。所有这些都很有效。

我需要:使会话无限期或尽可能长时间保持活跃。我正在从api缓存结果集,所以我不会发出太多请求,我的访问令牌存储在php会话中。但是,当新用户访问并且会话中没有此令牌时,在缓存过期和会话过期后,这些照片将不再可用?

期待听到一些可能的解决方案。如果您需要更多信息或者我的问题不清楚,请告诉我。

谢谢,

扎克

1 个答案:

答案 0 :(得分: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!
相关问题