Kat*_*ger 24 single-sign-on facebook-ios-sdk ios6
我正在使用Facebook SDK 3.1.1在我的iOS应用程序中实现FB Connect.这在新的FB集成(在iOS上登录)或通过Web视图回退到正常授权(在两种情况下都没有安装本机Facebook应用程序)的简单情况下工作正常.我在iOS级别切换帐户时会出现此问题.注销并使用其他FB用户帐户登录.
要登录/授权我执行:
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:allowLoginUI
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
Run Code Online (Sandbox Code Playgroud)
如果然后每次获得FBSessionStateClosedLoginFailed,即使我执行了closeAndClearTokenInformation达到该状态的时间:
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
NSLog(@"Session State Changed: %u", [[FBSession activeSession] state]);
switch (state) {
case FBSessionStateOpen:
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
NSLog(@"FBSessionStateClosedLoginFailed ERROR: %@", [error description]);
[[FBSession activeSession] closeAndClearTokenInformation];
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
但是,每次重试都会收到相同的状态.我的日志说明如下:
FBSDKLog: FBSession **INVALID** transition from FBSessionStateCreated to FBSessionStateClosed
FBSDKLog: FBSession transition from FBSessionStateCreated to FBSessionStateCreatedOpening
FBSDKLog: FBSession transition from FBSessionStateCreatedOpening to FBSessionStateClosedLoginFailed Session State Changed: 257
FBSessionStateClosedLoginFailed TOKEN: (null)
FBSessionStateClosedLoginFailed ERROR: Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0xb24cc20 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginFailedReason}
Run Code Online (Sandbox Code Playgroud)
任何人都可以复制这个或者知道问题可能在哪里?
ill*_*ors 38
另一个答案提供了一种手动将设备与服务器重新同步的方法.我定义了一个fbRsync调用此代码的方法.确保#import <Accounts/Accounts.h>在您的实现文件中,然后定义此方法:
-(void)fbResync
{
ACAccountStore *accountStore;
ACAccountType *accountTypeFB;
if ((accountStore = [[ACAccountStore alloc] init]) && (accountTypeFB = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook] ) ){
NSArray *fbAccounts = [accountStore accountsWithAccountType:accountTypeFB];
id account;
if (fbAccounts && [fbAccounts count] > 0 && (account = [fbAccounts objectAtIndex:0])){
[accountStore renewCredentialsForAccount:account completion:^(ACAccountCredentialRenewResult renewResult, NSError *error) {
//we don't actually need to inspect renewResult or error.
if (error){
}
}];
}
Run Code Online (Sandbox Code Playgroud)
}
然后我调用fbResync如果openActiveSessionWithReadPermissions产生错误:
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
if(error)
{
NSLog(@"Session error");
[self fbResync];
[NSThread sleepForTimeInterval:0.5]; //half a second
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
}
else
[self sessionStateChanged:session state:state error:error];
}];
Run Code Online (Sandbox Code Playgroud)
半秒延迟可能是不必要的,但它目前给了我一点心思.
这似乎解决了我的问题.我现在可以在Facebook帐户之间切换,并且能够登录.是的!
Pie*_*ard 12
我有同样的问题.检查您的FB应用程序是否在设置 - > Facebook中启用.我被禁用(即使我不记得禁用它),一旦我启用它,它就被修复了.
在我的测试过程中,我已经从我的FB帐户中添加和删除了我的FB应用程序几次,该帐户与我的iPhone相关联.它可以解释为什么,神奇地,我的应用程序被禁用.
| 归档时间: |
|
| 查看次数: |
31928 次 |
| 最近记录: |