Dropbox API 可以绕过应用程序权限/验证吗?

问题描述 投票:0回答:1

我和这个人有同样的想法:将文件上传到 Dropbox,绕过授权页面?

但是,我会更详细地解释。

我已经构建了一个自定义的 asp.net 文件上传控件,支持服务器端存储和 AWS S3,并且我想添加 Dropbox。

来自 API 文档:https://www.dropbox.com/developers/core/docs

看来我必须首先生成令牌,验证应用程序,然后与令牌一起调用https://www.dropbox.com/1/oauth/authorize

问题是我希望最终用户能够安装该控件,将他们的应用程序/密钥添加到控件设置中,并且在页面加载时就可以使用了。

所以我不想为每个 John Doe 使用 API 来授予权限并将文件上传到他们自己的保管箱。

希望我说得有道理......这是一些代码:

        Dim appKey As String = "myappkey"
        Dim appSecret As String = "mysecretkey"
        Dim uri As Uri = New Uri("https://api.dropbox.com/1/oauth/request_token")

        Dim oAuth As OAuthBase = New OAuthBase()
        Dim nonce As String = oAuth.GenerateNonce()
        Dim timeStamp As String = oAuth.GenerateTimeStamp()
        Dim parameters As String = String.Empty
        Dim normalizedUrl As String = String.Empty
        Dim signature As String = oAuth.GenerateSignature(uri, appKey, appSecret, String.Empty, String.Empty, "GET", timeStamp, nonce, OAuthBase.SignatureTypes.HMACSHA1, _
                                                          normalizedUrl, parameters)

        signature = HttpUtility.UrlEncode(signature)

        Dim requestUri As StringBuilder = New StringBuilder(uri.ToString)
        With requestUri
            .AppendFormat("?oauth_consumer_key={0}&", appKey)
            .AppendFormat("oauth_nonce={0}&", nonce)
            .AppendFormat("oauth_timestamp={0}&", timeStamp)
            .AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1")
            .AppendFormat("oauth_version={0}&", "1.0")
            .AppendFormat("oauth_signature={0}", signature)
        End With

        Dim request As HttpWebRequest = WebRequest.Create(New Uri(requestUri.ToString()))
        request.Method = WebRequestMethods.Http.Get

        Dim response As HttpWebResponse = request.GetResponse()
        Dim queryString = New StreamReader(response.GetResponseStream()).ReadToEnd()
        Dim parts = queryString.Split("&"c)
        Dim token = parts(1).Substring(parts(1).IndexOf("="c) + 1)
        Dim tokenSecret = parts(0).Substring(parts(0).IndexOf("="c) + 1)

        Dim queryString2 As String = String.Format("oauth_token={0}", token)

' the below code is what I want to bypass, as in verifying the app permissions by loading a Dropbox verification page.

Dim authorizeUrl As String = "https://www.dropbox.com/1/oauth/authorize?" + queryString2

也许我在这里错过了一些基本的东西,或者可能是一个在线示例。

再次强调,我网站的访问者将能够使用此文件上传器,例如他们正在为其个人资料页面上传个人资料图片。这是我网站的 Dropbox 帐户。

asp.net vb.net dropbox dropbox-api
1个回答
1
投票

根据评论,目标是让每个部署代码的开发人员都使用他们的 Dropbox 帐户作为上传目的地。

每个开发人员都需要使用他们的帐户进行身份验证并将他们的访问令牌放入(代码或配置)。请参阅 https://www.dropbox.com/developers/blog/94/generate-an-access-token-for-your-own-account,了解开发人员使用自己的应用程序执行此操作的一键式方法。但请注意,这是 Dropbox 的一种奇怪用法,因为 Dropbox 通常意味着每个最终用户都可以使用自己的帐户进行授权并使用自己的 Dropbox。

© www.soinside.com 2019 - 2024. All rights reserved.