Dropbox SDK设置/身份验证问题。

时间:2012-11-11 22:48:41

标签: android dropbox-api

我在设置Android的dropbox-sdk时遇到问题。当开始执行代码时,我得到以下"Unfortunately xxx has stopped"

起初我认为问题可能出现在清单文件中,因为通常是因为我没有正确设置权限而收到错误。但是,它在网站上说,身份验证所需的唯一权限是互联网。我将把清单文件放在下面。

当我拨打AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET)AccessType ACCESS_TYPE = AccessType.APP_FOLDER时,会抛出错误,而在我的生命中,我无法弄清楚原因。声明(但不是初始化)DropboxAPI<AndroidAuthSession> mDBApi很好,这表明正确导入了库。

我已经在下面更改了它们,所以你们都必须接受我的话,但关键/秘密常数也是正确的,所以我怀疑它就是这样。这是我主要活动的片段:

package com.example.xxx.app;

import com.dropbox.client2.DropboxAPI;
import com.dropbox.client2.android.AndroidAuthSession;
import com.dropbox.client2.session.AppKeyPair;
import com.dropbox.client2.session.Session.AccessType;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

final static private String APP_KEY = "1234key";
final static private String APP_SECRET = "1234secret";

DropboxAPI<AndroidAuthSession> mDBApi;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AccessType ACCESS_TYPE = AccessType.APP_FOLDER;
    AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
    AndroidAuthSession session = new AndroidAuthSession(appKeys, ACCESS_TYPE);
    mDBApi = new DropboxAPI<AndroidAuthSession>(session);
    setContentView(R.layout.activity_main);


}

我的清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.xxx.app"
android:versionCode="1"
android:versionName="1.0" >

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

      <!-- Dropbox Manifest -->
      <activity
      android:name="com.dropbox.client2.android.AuthActivity"
      android:launchMode="singleTask"
      android:configChanges="orientation|keyboard">
      <intent-filter>
        <data android:scheme="db-012345mykey" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE"/>
        <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
    </activity>

</application>

</manifest>

2 个答案:

答案 0 :(得分:1)

转到this网站,先在应用上创建。 Dropbox将为您提供两个密钥:APP_KEY和APP_SECRET。这些密钥的结果值放在您的应用程序中。如果您发现任何问题,请告诉我。

有关详细信息,请访问here

答案 1 :(得分:0)

你的onResume()在哪里?

protected void onResume() {
    super.onResume();

    // ...

    if (mDBApi.getSession().authenticationSuccessful()) {
        try {
            // MANDATORY call to complete auth.
            // Sets the access token on the session
            mDBApi.getSession().finishAuthentication();

            AccessTokenPair tokens = mDBApi.getSession().getAccessTokenPair();

            // Provide your own storeKeys to persist the access token pair
            // A typical way to store tokens is using SharedPreferences
            storeKeys(tokens.key, tokens.secret);
        } catch (IllegalStateException e) {
            Log.i("DbAuthLog", "Error authenticating", e);
        }
    }

    // ...
}

https://www.dropbox.com/developers/start/authentication#android