DropboxUnlinkedException - 如果你还没有设置会话访问令牌对,或者如果用户已撤销访问
我想上传文件到Dropbox的。我已经配置清单文件,并写入以下code。请帮助我了解我在这里失踪。
活动的onClick
I am trying to upload a file to dropbox. I have configured manifest file, and written the below code. Please help me understand what I am missing here. Activity onClick
Intent uploadToDropbox = new Intent(this, SUploadDB2Dropbox.class);
startService(uploadToDropbox) ;
服务SUploadDB2Dropbox
Service SUploadDB2Dropbox
private DropboxAPI<AndroidAuthSession> mDBApi;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
AppKeyPair appKeys = new AppKeyPair(God.DROPBOX_APP_KEY,
God.DROPBOX_APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
mDBApi.getSession().startOAuth2Authentication(this);
UploadDB2DropBox upload2DropBox = new UploadDB2DropBox(this, mDBApi);
upload2DropBox.execute();
return super.onStartCommand(intent, flags, startId);
}
UploadDB2DropBox的AsyncTask
UploadDB2DropBox AsyncTask
@Override
public String doInBackground(Object... params) {
File file = new File(context.getDatabasePath(God.TABLE_ACTIVATIONS)
+ ".db");
Log.d(God.TAG,
"Database path "
+ context.getDatabasePath(God.TABLE_ACTIVATIONS));
FileInputStream inputStream = null;
try {
String newFileName;
inputStream = new FileInputStream(file);
newFileName = "/" + God.TABLE_ACTIVATIONS
+ Calendar.getInstance().getTimeInMillis() + ".db";
Log.d(God.TAG, "File path " + file.getName() + " len "
+ inputStream.available());
Log.d(God.TAG, " New Filename " + newFileName);
Entry response = mDBApi.putFile(newFileName, inputStream,
file.length(), null, null);
Log.d(God.TAG, "Uploaded file is " + response.rev);
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.e(God.TAG, "FileNotFoundException");
} catch (DropboxException e) {
e.printStackTrace();n
Log.e(God.TAG, "DropboxException");
} catch (IOException e) {
Log.e(God.TAG, "IOException");
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
Log.e(God.TAG, "IOException");
}
}
}
return null;
}
我得到一个Dropbox的例外。屏幕并导航到保管箱允许用户
屏幕(每次虽然)。
logcat的
02-23 11:44:19.435: D/AutoActivate(27289): Database path /data/data/com.swipex.autoactivate/databases/activations
02-23 11:44:19.436: D/AutoActivate(27289): File path activations.db len 8372224
02-23 11:44:19.546: D/AutoActivate(27289): New Filename /activations1424672059436.db
02-23 11:44:19.702: E/AutoActivate(27289): DropboxException
清单文件
<activity
android:name="com.dropbox.client2.android.AuthActivity"
android:configChanges="orientation|keyboard"
android:launchMode="singleTask" >
<intent-filter>
<data android:scheme="db-KEY_VALUE_HERE" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我得到一个UnlinkException
I am getting a UnlinkException
DropboxUnlinkedException - 如果你没有设置一个访问令牌,对上一届会议,或用户已撤销访问
DropboxUnlinkedException - if you have not set an access token pair on the session, or if the user has revoked access.
我是什么失踪?
可怕的Dropbox文件我必须说,
Terrible dropbox documentation I must say
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(God.TAG, "Initializing Dropbox");
AppKeyPair appKeys = new AppKeyPair(God.DROPBOX_APP_KEY,
God.DROPBOX_APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
mDBApi.getSession().startOAuth2Authentication(this);
if (mDBApi != null && mDBApi.getSession().authenticationSuccessful()) {
try {
// Required to complete auth, sets the access token on the session
mDBApi.getSession().finishAuthentication();
UploadDB2DropBox upload2DropBox = new UploadDB2DropBox(this,
mDBApi);
upload2DropBox.execute();
//String accessToken = mDBApi.getSession().getOAuth2AccessToken();
} catch (IllegalStateException e) {
Log.i(God.TAG, "Error authenticating", e);
}
}
return super.onStartCommand(intent, flags, startId);
}
这帮助。我不知道为什么Dropbox的不断要求从UI的许可。其愚蠢的,如果我必须保持请求允许使用此API。
This helped. I wonder why dropbox keeps asking for permission from the UI. Its stupid to use this api if I have to keep asking for permission.