2016-06-29 3 views
0

파일을 Dropbox에 업로드하려고 할 때 InvalidAccessTokenException이 발생합니다. InvalidAccessTokenException을 반환Dropbox API v2, 인증 후 파일로드 시도시 InvalidAccessTokenException

Auth.startOAuth2Authentication(context, APP_KEY); 

//granting access 
//previous activity is reopened 

String accessToken = Auth.getOAuth2Token(); 
DbxRequestConfig requestConfig = DbxRequestConfig.newBuilder(CLIENT_ID) 
        .withHttpRequestor(OkHttp3Requestor.INSTANCE) 
        .build(); 
DbxClientV2 client = new DbxClientV2(requestConfig, accessToken); 
client.files().uploadBuilder(ADDRESS_IN_DROPBOX) 
          .uploadAndFinish(inputStream); 

: 권한 부여를 위해

나는 다음 알고리즘을 사용합니다.

아마도 내가 뭔가 잘못하고 있습니다.

어쩌면 Auth.getOAuth2Token()은 액세스 코드 (메소드 이름에서 약간 분명함) 대신 auth code를 반환하지만 인증 코드를 알고있을 때 액세스 코드를 얻는 방법은 무엇일까요?

추신 : 나는 안드로이드 프로젝트를 예제로 사용했습니다 - https://github.com/dropbox/dropbox-sdk-java/tree/master/examples/android 그리고 예제와 똑같이 auth를 수행했습니다.

편집 --------------------------------------------- --------------------------------------------------

문제는 Dropbox 웹 페이지의 계정 설정에서 앱에 대한 액세스 권한을 취소 한 후에 만 ​​발생합니다.

+0

[가교 참조를 위해 다음과 같습니다 https://www.dropboxforum.com/hc/en-us/커뮤니티/게시물/207431186-Android-InvalidAccessTokenException- 시도 후로드 - 파일 - 후 - 인증] – Greg

답변

1

내 코드에서 문제가 발견되었습니다. 클라이언트 초기화이

public static void init(String accessToken) { 
    if (sDbxClient == null)) { 
     DbxRequestConfig requestConfig = DbxRequestConfig.newBuilder("ID") 
       .withHttpRequestor(OkHttp3Requestor.INSTANCE) 
       .build(); 

     sDbxClient = new DbxClientV2(requestConfig, accessToken); 

    } 
} 

그리고 액세스 토큰이 취소 된 것 같습니다 어디 보관에서의 예에서와 같이 DropboxClientFactory 사용했습니다 - sDbxClient가 이미 초기화되어 있기 때문에 init 프로세스가 호출되지 않았습니다.

그래서 나는 토큰 사용 액세스를 개최 DropboxClientFactory하는 변수 accessCode을 추가하고 지금 초기화이

public static void init(String accessToken) { 
     if (sDbxClient == null || !accessToken.equals(accessCode)) { 
      DbxRequestConfig requestConfig = DbxRequestConfig.newBuilder("ID") 
        .withHttpRequestor(OkHttp3Requestor.INSTANCE) 
        .build(); 

      sDbxClient = new DbxClientV2(requestConfig, accessToken); 

     } 
    } 
1

당신은 언급 :

문제는 보관 용 웹 페이지에서 계정 설정에서 응용 프로그램에 대한 액세스 권한을 취소 한 후 발생합니다.

이 경우 InvalidAccessTokenException이 필요합니다. 사용자가 https://www.dropbox.com/account/security을 통해 앱의 연결을 해제하여 토큰을 취소하면이 토큰으로 시도한 이후의 모든 API 호출이이 예외와 함께 실패합니다. 코드에서이 예외를 catch하고 계속 사용하려면 앱을 다시 연결하라는 메시지를 사용자에게 표시해야합니다.

+0

나는 그렇게했습니다. 예외가 catch되고 권한 부여 프로세스가 다시 시작되었습니다. 그러나 권한 부여 직후에 파일을 업로드하려고 시도하면 다른 InvalidAccessTokenException이 발생합니다. – Levor