iOS OneDrive(skydrive)应用程序每次运行时都会显示权限对话框

史蒂文·W·Disbrow

我正在开发一个iOS应用程序,该应用程序使用户可以访问他们的OneDrive / SkyDrive,但遇到了一个非常烦人的问题:

用户首次将应用程序链接到其OneDrive时,一切都会按预期进行:

  1. 他们必须输入用户名和密码
  2. 然后,他们必须同意让该应用访问其信息
  3. 然后他们可以浏览他们的OneDrive

很好

但是,如果应用程序关闭,并且您尝试再次访问OneDrive,而不是直接跳到#3并能够访问OneDrive,则它们将在步骤2停止(按预期,跳过了步骤1),并且它们必须再次同意才能让该应用访问其信息。

该代码直接取自在线文档中的iOS示例(基于在Stack Overflow上找到的示例进行了一些细微修改),但是,这里需要进行检查:

- (void) onedriveInitWithDelegate:(id)theDelegate {
    self.onedriveClient = [[LiveConnectClient alloc] initWithClientId:MY_CLIENT_ID
    delegate:theDelegate
    userState:@"initialize"];
    }

然后,theDelegate实现:

- (void)authCompleted:(LiveConnectSessionStatus) status
    session:(LiveConnectSession *) session
    userState:(id) userState {
    NSLog(@"Status: %u", status);
    if ([userState isEqual:@"initialize"]) {
        NSLog( @"authCompleted - Initialized.");
        if (session == nil) {
            [self.onedriveClient login:self
                scopes:[NSArray arrayWithObjects:@"wl.basic", @"wl.signin", @"wl.skydrive_update", nil]
                delegate:self
                userState:@"signin"];
            }
        }
    if ([userState isEqual:@"signin"]) {
        if (session != nil) {
            NSLog( @"authCompleted - Signed in.");
        }
    }
}

我认为状态值可能会提供线索,也许我可以避免登录调用,但是当我在调用initWithClientId之后进入authCompleted时,它始终为零/未定义。(会话始终为零。)

我是否缺少范围?是否有不同的拨打电话而不是直接登录电话?还是比这更复杂?我已经看到了与OAuth2登录相关的“刷新令牌”的参考,但是我无法找到任何在这种情况下如何使用它们的具体示例。

非常感谢任何帮助和/或见解。

史蒂文·W·Disbrow

好吧,事实证明,答案很简单。我只需要在初始登录操作期间将“ wl.offline_access”范围添加到我的范围列表中。在这个范围内,文档并没有真正暗示这种类型的行为,但是,这确实对我有用。

添加了此新作用域之后,对应用程序的后续调用将不再显示“同意​​授予应用程序这些权限”对话框,而我可以直接浏览OneDrive。

(信用证到期日:在Microsoft论坛上的Stephane Cavin给了我解决该问题的提示。详细信息在这里:

http://social.msdn.microsoft.com/Forums/zh-CN/8c5c7a99-7e49-401d-8616-d568eea3cef1/ios-onedrive-skydrive-app-displays-permissions-dialog-every-time-it-runs吗? forum = onedriveapi

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS使用“当前位置权限”对话框在Phonegap应用中显示两次

来自分类Dev

iOS-在使应用程序后台运行时,在UI顶部显示一致的警报(就像个人热点一样)

来自分类Dev

通过CMake构建的ios上Qt应用程序的运行时错误

来自分类Dev

应用程序未运行时,Objective-C IOS 7推送通知是否保存数据?

来自分类Dev

应用程序在前台运行时收到iOS推送通知

来自分类Dev

使iOS客户端在应用程序后台运行时响应SignalR请求

来自分类Dev

当iOS应用程序在后台运行时,后台查询未返回,由Background Fetch触发

来自分类Dev

当应用程序在前台运行时,在iOS上调用Sinch shouldSendPushNotifications

来自分类Dev

尝试在IO7.1(photo.framework)上运行时iOS应用程序崩溃

来自分类Dev

在应用程序本机共享对话框和iOS中的Google+登录中

来自分类Dev

跟踪应用的运行时间iOS

来自分类Dev

每次运行时,应用程序都会自行提取

来自分类Dev

在iOS Swift中进行本地化。我如何在运行时更改应用程序语言

来自分类Dev

在iOS中再次显示权限对话框

来自分类Dev

当应用程序退出后台并在iOS和Android中恢复运行时,WebView是否正在重新加载?

来自分类Dev

iOS应用程序权限

来自分类Dev

当应用程序在iOS 7中在后台运行时将数据发送到服务器

来自分类Dev

从Xcode运行时,为什么我的ios应用程序似乎仅继续执行后台任务

来自分类Dev

IBM Worklight-应用程序更新时,IOS“下载应用程序更新”对话框卡住了

来自分类Dev

在iOS 7.1上运行时,应用程序无法全屏启动吗?

来自分类Dev

FBSDKLoginManager无法在本机ios应用程序中打开登录对话框

来自分类Dev

删除并使用xCode7启动应用程序后,出现iOS9推送通知对话框

来自分类Dev

处理内置的iOS权限对话框

来自分类Dev

在iOS中再次显示权限对话框

来自分类Dev

显示iOS位置权限对话框的自定义视图

来自分类Dev

使用 OAuth2 和 Google 和 Safari 的 iOS 应用程序显示打开页面对话框

来自分类Dev

在 Xamarin iOS 中不显示媒体库权限对话框

来自分类Dev

当我们的应用程序快速运行时,检测显示在 iOS 设备屏幕上的推送通知

来自分类Dev

如何在应用程序被杀死而不在 IOS 后台运行时获取通知负载

Related 相关文章

  1. 1

    iOS使用“当前位置权限”对话框在Phonegap应用中显示两次

  2. 2

    iOS-在使应用程序后台运行时,在UI顶部显示一致的警报(就像个人热点一样)

  3. 3

    通过CMake构建的ios上Qt应用程序的运行时错误

  4. 4

    应用程序未运行时,Objective-C IOS 7推送通知是否保存数据?

  5. 5

    应用程序在前台运行时收到iOS推送通知

  6. 6

    使iOS客户端在应用程序后台运行时响应SignalR请求

  7. 7

    当iOS应用程序在后台运行时,后台查询未返回,由Background Fetch触发

  8. 8

    当应用程序在前台运行时,在iOS上调用Sinch shouldSendPushNotifications

  9. 9

    尝试在IO7.1(photo.framework)上运行时iOS应用程序崩溃

  10. 10

    在应用程序本机共享对话框和iOS中的Google+登录中

  11. 11

    跟踪应用的运行时间iOS

  12. 12

    每次运行时,应用程序都会自行提取

  13. 13

    在iOS Swift中进行本地化。我如何在运行时更改应用程序语言

  14. 14

    在iOS中再次显示权限对话框

  15. 15

    当应用程序退出后台并在iOS和Android中恢复运行时,WebView是否正在重新加载?

  16. 16

    iOS应用程序权限

  17. 17

    当应用程序在iOS 7中在后台运行时将数据发送到服务器

  18. 18

    从Xcode运行时,为什么我的ios应用程序似乎仅继续执行后台任务

  19. 19

    IBM Worklight-应用程序更新时,IOS“下载应用程序更新”对话框卡住了

  20. 20

    在iOS 7.1上运行时,应用程序无法全屏启动吗?

  21. 21

    FBSDKLoginManager无法在本机ios应用程序中打开登录对话框

  22. 22

    删除并使用xCode7启动应用程序后,出现iOS9推送通知对话框

  23. 23

    处理内置的iOS权限对话框

  24. 24

    在iOS中再次显示权限对话框

  25. 25

    显示iOS位置权限对话框的自定义视图

  26. 26

    使用 OAuth2 和 Google 和 Safari 的 iOS 应用程序显示打开页面对话框

  27. 27

    在 Xamarin iOS 中不显示媒体库权限对话框

  28. 28

    当我们的应用程序快速运行时,检测显示在 iOS 设备屏幕上的推送通知

  29. 29

    如何在应用程序被杀死而不在 IOS 后台运行时获取通知负载

热门标签

归档