我已经阅读了大量关于ACAccounts.framework
的信息并成功将其集成到我的应用程序中。
说实话,所有教程都没有良好的错误流程以及下一步该做什么。
我的以下身份验证工作正常:
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSDictionary *options = @{
ACFacebookAppIdKey : kPSFacebookKey,
ACFacebookPermissionsKey : @[@"email"],
ACFacebookAudienceKey : ACFacebookAudienceEveryone};
[accountStore requestAccessToAccountsWithType:accountType
options:options
completion:^(BOOL granted, NSError *error){
if (granted) {
NSArray *accounts = [_currentUser.accountStore
accountsWithAccountType:accountType];
_currentUser.facebook = [accounts firstObject];
dispatch_async(dispatch_get_main_queue(), ^{
authSuccess();
});
} else {
dispatch_async(dispatch_get_main_queue(), ^{
authFailure(error);
// Display UIAlertView to make user go to settings and add account?! WHAT?
});
}
}];
如果用户在设置中拥有帐户,我依赖它并认为该用户已登录。
这确实按预期工作,但只要用户在settings
中拥有帐户,就会被授予。
否则,我会显示提醒,以便用户转到settings
并添加帐户。我不想那样!
所以,期望的流程是:
settings
中拥有帐户,则通过ACAccountStore
工作settings
中没有帐户 - >转到facebook
app?facebook
应用 - >转到safari
facebook
登录表单 - >登录然后返回应用程序我相信Foursquare
有这样的流程。
所以我的主要问题是:
Facebook iOS SDK
Facebook
会话的凭据并手动将其添加到ACAccountStore
吗?感谢
答案 0 :(得分:3)
我遇到了gist
:
https://gist.github.com/rsms/4726728
满足以下期望:
settings
中有帐户通过ACAccountStore
settings
中没有帐户 - >去facebook app Facebook
app - >转到safari
Facebook
登录表单 - >输入凭证 - >自动返回应用程序真正酷的是,我不必手动获取ACAccountStore
(iOS系统中的帐户),Facebook SDK为我做,我只是依靠Facebook会话( ISOPEN)。
还有一个问题是会话在重新启动应用程序后消失了,这可以通过添加:
来解决[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:NO
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {}];