【问题标题】:How to Keep an OAuth Session Alive如何保持 OAuth 会话处于活动状态
【发布时间】:2013-07-30 17:38:09
【问题描述】:

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

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

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

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

谢谢,

扎克

【问题讨论】:

  • 您不能在令牌过期时为 Instagram 客户端请求一个新令牌吗?
  • 我可以,但我相信这会将用户发送回我的重定向 uri,它位于管理面板中。

标签: api oauth kohana instagram


【解决方案1】:

您应该将最新的访问令牌保存在数据库或服务器上,并使用保存的令牌发出请求。 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!

【讨论】:

    猜你喜欢
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2017-10-21
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多