我无法使用VB.Net代码刷新我的令牌。这段代码有什么问题?如果我创建开发人员令牌并使用,它可以工作1小时。那就是它!每次在代码中使用时,我都必须使用我的Box企业用户ID重新生成开发人员令牌。
Imports BoxApi.V2
Imports BoxApi.V2.Authentication.OAuth2
Imports BoxApi.V2.Model
Imports System.IO
Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim clientID As String
Dim clientSecret As String
Dim oldRefreshToken As String
Dim newToken As BoxApi.V2.Authentication.OAuth2.OAuthToken
clientID = "My client id"
clientSecret = "My client secret"
Dim tokenProvider As New TokenProvider(clientID, clientSecret)
'''' Reading Refresh token from the file
Dim streamReader As StreamReader
streamReader = System.IO.File.OpenText(Server.MapPath("~\\Box\\BoxApiRefreshToken.txt"))
oldRefreshToken = streamReader.ReadToEnd()
streamReader.Close()
newToken = tokenProvider.RefreshAccessToken(oldRefreshToken)
Dim boxManager As New BoxManager(newToken.AccessToken)
'Dim boxManager As New BoxManager("My Developer Token")
'''' Writing the new Refresh token to the file
Dim streamWriter As New StreamWriter(Server.MapPath("~\\Box\\BoxApiRefreshToken.txt"))
streamWriter.Write(newToken.RefreshToken)
'streamWriter.Write("My Developer Token")
streamWriter.Close()
enter code here
End Sub
End Class
答案 0 :(得分:1)
好的,所以这里有一些事情发生。
Box的OAuth2实现涉及两个不同的令牌,这些令牌是成对发布的:
Access
令牌,授权API请求并在约60分钟后过期Refresh
令牌,用于定期获取新的访问/刷新令牌对。这将在60天后或首次成功使用后到期,以先到者为准。当您在Box的网站上使用创建开发人员令牌功能时,您只会获得Access
令牌。这不能刷新(因为您没有获得相应的刷新令牌),也不能用于刷新其他访问令牌。
要获得可刷新标记对,您需要将整个OAuth2工作流程执行为documented by Box。此工作流必须在Web浏览器中执行。我已经设置了执行工作流程的简单web app,并为您提供了可刷新的令牌对。请注意,您必须将redirect_uri
设置为https://box-oauth2-mvc.azurewebsites.net/
才能使该应用正常运行。
来自(3)的令牌对应该是无限可刷新的。回想一下,每次使用刷新令牌时,您都会收到一个全新的访问/刷新令牌对。 原始刷新令牌在成功使用后无效。 新刷新令牌必须用于下一次刷新操作。