アカウントが設定に追加されているときに Facebook フレームワークを使用して Facebook にログインしようとしたときに同じ問題が発生しましたが、次のコードを使用してこれを修正しました。
私が知っている限りでは「com.facebook.sdk error2.」iPhoneにアカウントが追加されている場合に発生します。
appdelegate.h
@property (強力、非アトミック) FBSession *mysession;
appdelegate.m にメソッドを追加するだけです
-(void)openSessionWithAllowLoginUI:(BOOL)allowLoginUI{
if (!self.mysession.isOpen) {
// create a fresh session object
self.mysession = [[FBSession alloc] initWithPermissions:permissions];
}
[self.mysession openWithCompletionHandler:^(FBSession *session,
FBSessionState stat,
NSError *error){
[self sessionStateChanged:session
state:stat
error:error];
NSLog(@"Session Staet is = %u",stat);
switch (stat){
case FBSessionStateClosed:
break;
case FBSessionStateOpen:{
NSString *strAccessToken1 = [mysession accessToken];
NSLog(@"AccessToken = %@",strAccessToken1);
NSString *urlstring1 = [NSString stringWithFormat:@"https://graph.facebook.com/me?access_token=%@",strAccessToken1];
NSURL *url1 = [NSURL URLWithString:[urlstring1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *jsonRes = [NSString stringWithContentsOfURL:url1 encoding:NSUTF8StringEncoding error:nil];
NSDictionary *facebookData = [jsonRes JSONValue];
NSLog(@"FBSessionStateOpen = %@",facebookData);
NSString *strFBID = [[NSString alloc]initWithString:[NSString stringWithFormat:@"%@",[facebookData objectForKey:@"id"]]];
NSString *strName = [[NSString alloc]initWithString:[facebookData objectForKey:@"name"]];
NSLog(@"FBSessionStateOpen = %@",strName);
NSString *ProfileImageURL = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture",strFBID];
NSLog(@"Profile image URL is = %@",ProfileImageURL);
NSString *strImageURl = [[NSString alloc]initWithString:ProfileImageURL];
strAccessToken = [[NSString alloc]initWithString:strAccessToken1];
strAppUserName = [[NSString alloc]initWithString:strName];
strFacebookUsername = [[NSString alloc]initWithString:strName];
strAppUserProfileImage = [[NSString alloc]initWithString:strImageURl];
strFacebookUserId = [[NSString alloc]initWithString:strFBID];
break;
}
default:
break;
}
}];
}
これは私のアクションメソッドで
-(IBAction)Facebook_Btn_Clicked:(id)sender{
[appDelegate openSessionWithAllowLoginUI:YES];
}