将Dropbox集成到我的应用程序中,该应用程序显示安全警报

时间:2013-09-16 10:29:10

标签: android dropbox

我已经成功开发了一个应用程序我想在数据库中存储数据库。所以我使用dropbox-android-sdk-1.5.4示例,这对我来说很好。

我的问题是当我在我的应用程序中集成这个sdk示例应用程序并在那时进行登录过程时显示一个错误:

  

“手机上的另一个应用可能会尝试使用您当前正在使用的应用。恶意应用无法访问您的帐户,但已禁用链接到Dropbox作为预防措施。请与support @ dropbox联系。 COM“

enter image description here

6 个答案:

答案 0 :(得分:11)

只是一个猜测,但我认为如果您尝试在自己的应用中重复使用示例应用中的应用密钥和秘密,而不是通过https://www.dropbox.com/developers/apps/create创建新应用并使用该密钥和秘密,则可能会发生这种情况

答案 1 :(得分:9)

我知道这是一个古老的问题但是还有另一种可能性让我对未来可能遇到同样问题的用户感到困惑:

  

如果在验证过程中遇到类似的错误消息   “手机上的另一个应用程序可能正试图摆出你的应用程序   目前使用。“这意味着手机上安装了多个应用程序   具有针对单个应用程序密钥注册的回调活动。你可以解决   删除其中一个有问题的应用程序或切换到   新的应用密钥。

我通过安装相同应用程序的不同版本(调试和发布)来解决此问题。

Source Link

答案 2 :(得分:2)

我刚刚检查了SDK的代码,之所以发生这种情况,是因为您有2个应用程序处理Dropbox登录页面使用的回调URL的相同方案。

因此,当用户使用浏览器登录Dropbox时,成功登录后,浏览器将会打开db-123456789://somepath,其中123456789是您的Dropbox应用的唯一ID。如果您在处理db-123456789网址方案的设备上安装了多个应用,则最终会收到该警告。

我认为恶意应用程序可以在浏览器使用db-123456789方案通过专门处理该方案来获取访问令牌时捕获访问令牌,因此警告。

答案 3 :(得分:1)

这是因为不止一个应用程序使用相同的appKey。 检查您的应用程序是否有appKey-每个应用程序必须唯一。 从系统应用列表中删除所有与保管箱相关的应用。就我而言,有一个具有另一个applicationId的应用程序,但在启动屏幕上没有看到它。

答案 4 :(得分:0)

当我从不同版本的api移动时,我遇到了同样的问题。我在AndroidManifest.xml文件中有两个AuthActivity实例,即

    <activity
        android:name="com.dropbox.client2.android.AuthActivity"
        android:configChanges="orientation|keyboard"
        android:launchMode="singleTask" >
        <intent-filter>
            <!-- <data android:scheme="db-c9buqx8hii5bxx8" /> -->

            <data android:scheme="xxxxxxxxxxx" />
            <action android:name="android.intent.action.VIEW" />

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


    <activity
        android:name="com.dropbox.core.android.AuthActivity"
        android:configChanges="orientation|keyboard"
        android:launchMode="singleTask">
        <intent-filter>

            <!-- Insert your app key after “db-  ...” -->
            <data android:scheme="db-xxxxxxxxxx" />

            <action android:name="android.intent.action.VIEW" />

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

我在调试后发现了这一点,并注意到dropbox库检查了连接意图。如果dropbox发现多个活动,则会抛出安全警报错误。我使用下面的代码复制了相同的检查,并将其放在主要的启动活动中。它将打印出使用相同Dropbox意图找到的活动,这为我提供了发生了什么的线索。

public static void showDropboxActivities(Context context)
{
    Intent testIntent = new Intent(Intent.ACTION_VIEW);
    String scheme = "db-" + DROPBOX_APP_KEY;
    String uri = scheme + "://" + com.dropbox.core.android.AuthActivity.AUTH_VERSION + "/connect";
    testIntent.setData(Uri.parse(uri));
    PackageManager pm = context.getPackageManager();

    List<ResolveInfo> activities = pm.queryIntentActivities(testIntent, 0);

    Log.d("SomeApp", "------------- showDropboxActivities ------------");
    for (ResolveInfo activity : activities)
    {
        Log.d("SomeApp", "activty = " + activity.toString());
        Log.d("SomeApp", "activity.activityInfo = " + activity.activityInfo);
        Log.d("SomeApp","..............");
    }

}

答案 5 :(得分:0)

最近有同样的问题,没有一个答案能解决这个问题。

尝试演示应用程序并为其使用相同的应用程序密钥后,它开始发生。来到这篇文章,但没有运气。

这是我解决此问题的方法:

  1. 使用了新的应用程序密钥:无效
  2. 使用相同的应用程序密钥卸载演示应用程序:无效
  3. 已删除我应用程序数据目录下的令牌文件夹:已解决!

编辑:在应用#1或#2之后/之前,#3可以替换为清除应用程序的数据。