【问题标题】:OneDrive - How to retrieve authorization access data?OneDrive - 如何检索授权访问数据?
【发布时间】:2014-08-06 05:22:40
【问题描述】:

我开发了一个使用 OneDrive API 的 android 应用程序。当我连接到 OneDrive 时,它​​会要求我进行身份验证并显示授权页面(有权访问我在云上的数据)。

我的问题是:每次我在云端上传数据时,应用程序都会向我显示授权页面。我希望这个页面不要每次都出现。请问怎样才能找到已经录好的呢?

非常感谢!

【问题讨论】:

  • 这是使用 LiveSDK-for-Android 吗?
  • 是的。但我不知道如何使用它来解决我的问题。

标签: android permissions authorization onedrive


【解决方案1】:

使用 LiveSDK for Andriod 时,假设用户在使用应用程序时始终经过身份验证,为了保持此流程,我们要求您调用 LiveAuthClient.initialize(...) 来更新用户凭据(无需任何用户输入)或调用 LiveAuthClient.login(...) 以执行交互式登录(用户输入用户名/密码)。

在 LiveSDK 示例应用中,我们看到这是通过名为 SignInActivity.java 的启动活动实现的。以下是执行静默凭证更新的相关摘录:

protected void onStart() {
   super.onStart();
   mAuthClient.initialize(Arrays.asList(Config.SCOPES), new LiveAuthListener() {
      @Override
      public void onAuthError(LiveAuthException exception, Object userState) {
         mInitializeDialog.dismiss();
         showSignIn();
         showToast(exception.getMessage());
      }

      @Override
      public void onAuthComplete(LiveStatus status, LiveConnectSession session, Object userState) {
         mInitializeDialog.dismiss();
         if (status == LiveStatus.CONNECTED) {
            launchMainActivity(session);
         } else {
            showSignIn();
         }
      }
   });
}

launchMainActivity() 函数将用户移动到主应用程序代码中,这将是您的应用程序真正开始的地方。要查看此登录活动的完整详细信息,请查看示例应用程序 SignInActivity.java in Github

【讨论】:

  • 感谢您的回答。它在我编写 LiveAuthClient.initialize(...) 和 LiveAuthClient.login(...) 之后起作用。
  • 但是...当我关闭并重新启动应用程序时,我遇到了同样的问题。它要求我再次接受权限(但不是对我进行身份验证)。因此,它保留帐户信息但不保留权限。请问我该怎么办?我查看了您的示例应用程序,但没有找到有关它的信息。
  • 您需要将 wl.offline_access 范围包含在您的请求中,这将导致范围检查信息被缓存,因此不会在每次身份验证尝试时都请求它。
  • 我忘记了 wl.offline_access 范围。非常感谢 ! :)
  • 最后一个问题:用户连接后,如何获取连接用户的帐户信息(例如电子邮件地址)。谢谢大家。
猜你喜欢
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2015-07-17
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多