如何保持OAuth会话有效



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

背景:我在我的自定义管理面板中创建了一个设置页面,该页面包含客户端ID和客户端机密。它将这些值保存到我的DB中,我的应用程序使用它们连接到Api。我有一个按钮,你可以点击"保存并连接",它会更新我的数据库,然后从Instagram Api请求身份验证令牌。所有这些都很棒。

我需要:无限期或尽可能长时间地保持会话的活力。我正在缓存来自api的结果集,这样我就不会发出太多请求,并且我的访问令牌存储在php会话中。然而,当一个新用户访问,并且在他们的会话中没有这个令牌时,在缓存过期和会话过期后,照片将不再可用?

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

谢谢,

Zack

您应该将最新的访问令牌保存在数据库或服务器上,并使用保存的令牌进行请求。Instagram访问令牌是长寿命的(至少目前是这样)。请随意使用我这里的包装纸。这样,除了第一次获得令牌之外,会话是没有问题的。

  $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!

最新更新