适用于iOS的SkyDrive:保持用户登录

时间:2014-01-13 10:17:13

标签: ios onedrive

我在我的iOS应用程序上使用SkyDrive,一切正常,直到我关闭我的应用程序,当我再次打开它时,我必须再次验证用户。我使用这段代码:

- (id)init
{
    self = [super init];

    if (self) {
        self.clientID = @"my id";
        self.scopes = @[@"wl.signin", @"wl.skydrive", @"wl.skydrive_update"];

        self.liveClient = [[LiveConnectClient alloc] initWithClientId:self.clientID
                                                           scopes:self.scopes
                                                         delegate:self
                                                        userState:@"initialize"];
    }

    return self;
}

这是用于第一次登录用户,当我点击按钮时:

- (void)signInFromViewController:(UIViewController *)viewController
{
    if (_liveClient) {
        if (self.liveClient.session == nil) {
            [self.liveClient login:viewController
                        scopes:self.scopes
                      delegate:self
                     userState:@"signin"];
        }
    }
}

和LiveAuthDelegate方法;

- (void)authCompleted:(LiveConnectSessionStatus)status
          session:(LiveConnectSession *)session
        userState:(id)userState
{
    if ([userState isEqual:@"signin"]) {
        if (session != nil) {
            NSLog(@"Signed in");
        } else {
            NSLog(@"Auth error");
        }
    }
}

我该怎么办?当userState初始化时,authCompleted方法中的某些内容可能是什么?

1 个答案:

答案 0 :(得分:2)

我几乎完全一样的问题。解决方案是将“wl.offline_access”范围添加到我的初始登录呼叫中。

源代码和其他详细信息可以在我发布的问题中找到,即:

iOS OneDrive (skydrive) app displays permissions dialog every time it runs

希望这有帮助!

DIZ