java - Android - Box-API 只是挂起?

标签 java android token box-api

我编写了一个应用程序来使用 box-api 从手机上传文件。我通过以下方式对用户进行身份验证:

Intent intent = new Intent(this, BoxAuthentication.class);
intent.putExtra("API_KEY", Version.BOX_API_KEY);
startActivityForResult(intent, BOX_RESULT);

我通过以下方式获得返回的 token :

if (resultCode == BoxAuthentication.AUTH_RESULT_SUCCESS)
{
   if(data.getStringExtra("AUTH_TOKEN") != null) {
      writeStringPref(Global.boxToken, data.getStringExtra("AUTH_TOKEN"), getApplicationContext());
   } else { 
      toast("An error occured authenticating, please try again"); finish();
   }
} else if (resultCode == BoxAuthentication.AUTH_RESULT_FAIL) {
   toast("Unable to log into Box"); finish();
}

在我的上传方法中,我通过以下方式调用框:

final Box box = Box.getInstance(Version.BOX_API_KEY);

然后我创建一个文件夹以通过以下方式将文件上传到:

box.createFolder(token, 0l, Global.folderName, true, new CreateFolderListener(){
            @Override
            public void onIOException(IOException e) {
                        //HANDLE
            }

            @Override
            public void onComplete(BoxFolder boxFolder, String status) {
               //DO STUFF
                    }
        );

我遇到的问题是用户第一次进行身份验证时,我可以使用保存的 token 上传文件,没问题。但是,例如,一个小时后,当我打电话创建文件夹时,它似乎只是挂起。不返回任何内容,也不调用监听器中的任何方法。

这似乎也发生在我将代码更新推送到设备时,它停止工作并且唯一的解决方案是重新验证用户。 阅读文档似乎 token 不应该过期,并且由于没有返回任何内容,它似乎并不无效。

如果有不同,我将通过 Intent Service 调用此代码。

有人知道问题出在哪里吗?

最佳答案

我自己解决了这个问题。我是从不在主线程上的 Intent Service 调用 box,因此在调用 box api 时,我实际上是从后台线程调用后台线程。我没有知道为什么这有时有效而不是其他但使用处理程序(主线程)并通过它调用 box-api 似乎已经解决了问题。

关于java - Android - Box-API 只是挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14110158/

相关文章:

java - 使用 Jpedal 渲染包含视觉签名的 PDF 文档

java - LibGDX 在暂停时停止时间计数器

authentication - 在基于 token 的身份验证中,应用程序服务器如何知道哪些 token 有效?

reactjs - POST 请求 : "Authentication credentials were not provided" using Axios, 的身份验证错误,但使用 POSTMAN 工作

java - 从 url 加载位图太慢

rDrop 保管箱 api 非过期 token /无缝 token 问题

java - 如何使用 Avaya 实现 TAPI 解决方案

java - 为什么 while 循环在条件为假时被处理为真?

java - 如何使用 JCR 中的 SQL 从子名中检索父名

android - findViewByID(R.layout.skeleton_activity) 返回 null