OAuth 2中的一些困难:我应该保存授权代码还是只访问令牌?

use*_*282 2 .net c# authentication oauth oauth-2.0

注意:这不是关于编码,而是关于方法本身.

我正在为一个使用OAuth 2的网站建立一个客户端.由于这是我第一次使用oauth 2,因此我在理解该方法时遇到了一些问题.据我所知,直到现在:

我应该发送每个请求的访问令牌.为了在第一次获得此访问令牌,我将用户发送到网站,登录后我得到了一个authorization code.然后我把这个authorization code和我client_id以及client_secret获得access token和完成.

直到这里每件事都很好.但是在下一个应用程序执行中,我不知道该怎么做.我不想每次都要求用户登录.但是我怎么知道我的访问令牌仍然有效?我应该保存授权码并再次申请新的访问令牌吗?

我请求一个非过期的访问令牌,但要刷新访问令牌,我应该发送一些refresh_token?这是什么?我应该发送旧的访问令牌吗?

pin*_*yid 6

@Eugenio的回答是正确的.

回答你的具体问题

但是我怎么知道我的访问令牌仍然有效? 访问令牌带有到期时间,通常为一小时.另一种方法是尝试使用它并在它过期时捕获401状态.

我应该保存授权码并再次申请新的访问令牌吗? 不可以.授权码只能使用一次.您可以请求刷新令牌,保存,然后使用它来获取后续访问令牌,或者您可以重复授权过程,这取决于提供商,可能需要或可能不需要用户参与,因为提供商将知道用户之前已授权您的应用.

我请求一个非过期的访问令牌,但是为了刷新访问令牌,我应该发送一些refresh_token? 没有非过期访问令牌这样的东西.您使用刷新令牌以获取新的访问令牌.

什么是[刷新令牌]? 这是一个字符串,你的应用程序可以传递给提供者说"嘿,这是我再次.记住前一段时间用户xxxxx,授予我,应用程序yyyy(客户端ID),代表他做aaaa和bbbb(范围)的权限,即使他不在场.我现在想做一些,所以我可以获得一个访问令牌".

我应该发送旧的访问令牌吗? 不会.一旦访问令牌过期,它就没有用处或意义.