使用 BOXAPI.V2 从 VB.net 中的刷新令牌中获取访问令牌
Fetching access token from refresh token in VB.net using BOXAPI.V2
我无法使用以下 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
好的,所以这里发生了一些事情。
Box 的 OAuth2 实现涉及两个不同的令牌,它们成对发布:
Access
令牌,授权 API 请求并在 ~60 分钟后过期
Refresh
令牌,用于定期获取新的Access/Refresh令牌对。这将在 60 天后或首次成功使用后过期,以先到者为准。
当您在 Box 的网站上使用 创建开发人员令牌 功能时,您只会获得一个 Access
令牌。这无法刷新(因为您没有获得相应的刷新令牌)也不能用于刷新其他访问令牌。
为了获得 可刷新 令牌对,您需要执行整个 OAuth2 工作流程,如 documented by Box. This workflow must be performed in a web browser. I've set up simple web app 执行工作流程并为您提供可刷新的令牌对。请注意,您必须将 redirect_uri
设置为 https://box-oauth2-mvc.azurewebsites.net/
才能使该应用程序正常运行。
(3) 中的令牌对应该可以无限刷新。回想一下,每次使用刷新令牌时,您都会收到一个全新的 access/refresh 令牌对。 原刷新令牌使用成功后失效下次刷新操作必须使用新的刷新令牌
我无法使用以下 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
好的,所以这里发生了一些事情。
Box 的 OAuth2 实现涉及两个不同的令牌,它们成对发布:
Access
令牌,授权 API 请求并在 ~60 分钟后过期Refresh
令牌,用于定期获取新的Access/Refresh令牌对。这将在 60 天后或首次成功使用后过期,以先到者为准。
当您在 Box 的网站上使用 创建开发人员令牌 功能时,您只会获得一个
Access
令牌。这无法刷新(因为您没有获得相应的刷新令牌)也不能用于刷新其他访问令牌。为了获得 可刷新 令牌对,您需要执行整个 OAuth2 工作流程,如 documented by Box. This workflow must be performed in a web browser. I've set up simple web app 执行工作流程并为您提供可刷新的令牌对。请注意,您必须将
redirect_uri
设置为https://box-oauth2-mvc.azurewebsites.net/
才能使该应用程序正常运行。(3) 中的令牌对应该可以无限刷新。回想一下,每次使用刷新令牌时,您都会收到一个全新的 access/refresh 令牌对。 原刷新令牌使用成功后失效下次刷新操作必须使用新的刷新令牌