2014-11-18 3 views
0

나는 이것이 바보 같은 질문이 아니길 바란다. 나는이 사람과 같은 배에 타고있다. 나는 믿는다 : uploading files to Dropbox, bypassing authorization page?Dropbox API에 대한 앱 권한/인증을 무시할 수 있나요?

그러나 나는 더 자세히 설명 할 것이다.

서버 측 저장소 및 AWS S3을 지원하는 사용자 정의 asp.net 파일 업로드 컨트롤을 구축했으며 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 

어쩌면 내가 여기에 초등학교 뭔가, 또는 아마도 온라인 예를 놓쳤다.

내 웹 사이트 방문자는 프로필 페이지의 프로필 사진을 업로드하는 것처럼이 파일 업 로더를 사용할 수 있습니다 ... 웹 사이트의 보관 용 계정입니다. 희망이 의미가 있습니다.

모든 안내에 감사드립니다.

감사합니다.

+0

그래서 사용자가 자신의 프로필 사진을 계정에 업로드 할 수 있도록 DropBox 계정에 대한 인증을 원할 것입니까? – TyCobb

+0

@TyCobb 수정. 소셜 사이트를 사진으로 찍어 파일 저장을 위해 파일 시스템을 사용하는 대신 Dropbox를 사용하고 싶습니다. (예 : /Dropbox/Users/Uploads/Picture.jpg) – user1447679

+0

@ user1447679, 당신은 "정답"이라고 말했지만 나머지 부분은 일치하지 않는 것 같습니다. :-) 정말로 컨트롤을 설치하는 모든 사용자가 * your * 계정에 파일을 업로드해야한다고 말하고 있습니까? 그것은 좋은 생각처럼 보이지 않습니다. 그들이 * 자신의 * 계정에 업로드해야한다면 앱을 승인해야합니다. (그렇지 않으면 Dropbox에 쓸 수있는 권한이 없습니다.) – smarx

답변

1

의견을 바탕으로 코드를 배포 한 개발자는 보관 용 계정을 업로드 대상으로 사용하는 것이 목표입니다.

각 개발자는 자신의 계정으로 인증하고 액세스 토큰을 (코드 또는 구성)에 넣어야합니다. 개발자가 자신의 앱으로 한 번 클릭 할 수있는 방법은 https://www.dropbox.com/developers/blog/94/generate-an-access-token-for-your-own-account을 참조하십시오. 그러나 Dropbox는 일반적으로 각 최종 사용자가 자신의 계정으로 승인하고 자신의 Dropbox를 사용하는 것을 의미한다는 점에서 Dropbox의 이상한 사용이라는 점에 유의하십시오.

+0

오 ... 내 ... 어머나. 인터넷 검색 및 인터넷 검색 및 예제를보고, 나는 이것을 바로 스캔! Smarx 감사합니다. – user1447679

+0

재밌 네요, 나는 또한 당신의 레포를 우연히 만났습니다 OAuth2 - 어려운 길. 내가 다른 것을 버릴 거라고 생각 했어. :) – user1447679

관련 문제