我一直在尝试实现自己的OAuth2提供程序,而且我在refresh_token部分有点困难。我怎么想处理它?我应该在API或客户端检查refresh_token吗?如果我不清楚我会给出一个场景:
假设我在API端checkToken
中有一个函数来检查令牌是无效还是已过期。我很容易通过无效测试。然后我检查过期的部分。所以棘手的部分就在这里。在函数checkToken
中我应该添加
if(findRefreshToken($client_id, $user_id)) {
$this->grantRefreshToken($client_id, $client_secret, $user_id);
} else {
$this->error(401, 'Token expired');
}
或者我应该只有错误401并且客户端发现如何处理它?</ p>
答案 0 :(得分:1)
以下是使用此库实现oAuth库和api时的经验。
如果您将其实现为库,则需要单独使用checkToken和refreshToken。因此api(取决于要求)可以在检查/验证令牌时决定是否刷新令牌。
当在api中进行时,它又取决于要求。如果要求是用户会话应该从他上次访问开始活动一段时间(比如4小时),那么最好刷新令牌每次检查/验证令牌时。可以在客户端上完成相同的刷新令牌,但问题是客户端必须在每次api调用后调用刷新令牌,这意味着每个api都会有2次调用。
希望这会澄清。