使用 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

好的,所以这里发生了一些事情。

  1. Box 的 OAuth2 实现涉及两个不同的令牌,它们成对发布:

    • Access 令牌,授权 API 请求并在 ~60 分钟后过期
    • Refresh令牌,用于定期获取新的Access/Refresh令牌对。这将在 60 天后或首次成功使用后过期,以先到者为准。
  2. 当您在 Box 的网站上使用 创建开发人员令牌 功能时,您只会获得一个 Access 令牌。这无法刷新(因为您没有获得相应的刷新令牌)也不能用于刷新其他访问令牌。

  3. 为了获得 可刷新 令牌对,您需要执行整个 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/ 才能使该应用程序正常运行。

  4. (3) 中的令牌对应该可以无限刷新。回想一下,每次使用刷新令牌时,您都会收到一个全新的 access/refresh 令牌对。 原刷新令牌使用成功后失效下次刷新操作必须使用新的刷新令牌