使用BOXAPI.V2从VB.net中的刷新令牌获取访问令牌

时间:2015-06-25 16:08:31

标签: asp.net .net vb.net box-api

我无法使用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 个答案:

答案 0 :(得分:1)

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

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

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

  3. 要获得可刷新标记对,您需要将整个OAuth2工作流程执行为documented by Box。此工作流必须在Web浏览器中执行。我已经设置了执行工作流程的简单web app,并为您提供了可刷新的令牌对。请注意,您必须将redirect_uri设置为https://box-oauth2-mvc.azurewebsites.net/才能使该应用正常运行。

  4. 来自(3)的令牌对应该是无限可刷新的。回想一下,每次使用刷新令牌时,您都会收到一个全新的访问/刷新令牌对。 原始刷新令牌在成功使用后无效。 刷新令牌必须用于下一次刷新操作。