FacebookをiOSアプリに統合しましたが、うまく機能しています。しかし、FB資格情報を設定に保存すると、機能しません。以下の状態になります
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
NSLog(@"case open session");
// if([sharePref returnFbName].length==0)
[self listFriendsFB];
break;
case FBSessionStateClosed:
NSLog(@"case FBSessionStateClosed session");
case FBSessionStateClosedLoginFailed:
// Once the user has logged in, we want them to
// be looking at the root view.
//[viewController popToRootViewControllerAnimated:NO];
[FBSession.activeSession closeAndClearTokenInformation];
NSLog(@"case close or fail session");
break;
default:
break;
}
FBSessionStateClosedLoginFailedに入り、エラーが発生します。また、電話設定からアカウントを削除すると、正常に機能します。つまり、セッションが開き、正しくログインされます。これが私のコードです
- (void)openSession
{
//[self syncFacebookAccount];
NSArray *permissions=[[NSArray alloc]initWithObjects:@"email,publish_actions",nil];
dispatch_async(dispatch_get_main_queue(), ^{
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
NSLog(@"fb open session");
[self sessionStateChanged:session state:state error:error];
}];
});
}
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
NSLog(@"case open session");
// if([sharePref returnFbName].length==0)
[self fourthViewInitialization];
[self getFacebookInfo];
break;
case FBSessionStateClosed:
NSLog(@"case FBSessionStateClosed session");
case FBSessionStateClosedLoginFailed:
// Once the user has logged in, we want them to
// be looking at the root view.
//[viewController popToRootViewControllerAnimated:NO];
[FBSession.activeSession closeAndClearTokenInformation];
NSLog(@"case close or fail session");
break;
default:
break;
}
if (error) {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:AlertTitle
message:@"We are currently facing facebook connectivity issues. Please try again later!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
NSLog(@"error facebook : %@",error);
[alertView show];
[self hideActivityIndicator];
}
}
#pragma facebook methods
-(void)getFacebookInfo
{
// [NSThread detachNewThreadSelector:@selector(startLoader) toTarget:self withObject:nil];
NSString *query =[NSString stringWithFormat:@"Select name,uid,pic_square from user where uid=me()"];
// Set up the query parameter
my_info=[[NSMutableDictionary alloc]init];
my_info_array=[[NSMutableArray alloc ]init];
NSDictionary *queryParam =
[NSDictionary dictionaryWithObjectsAndKeys:query, @"q", nil];
// Make the API request that uses FQL
[FBRequestConnection startWithGraphPath:@"/fql"
parameters:queryParam
HTTPMethod:@"GET"
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
if (error) {
NSLog(@"Error: %@", [error localizedDescription]);
[self hideActivityIndicator];
} else {
// NSLog(@"Result: %@", result);
// [self hideActivityIndicator];
my_info_array=(NSMutableArray *)[result objectForKey:@"data"];
my_info=[my_info_array objectAtIndex:0];
//NSLog(@"my info array %@",my_info_array);
NSLog(@"my info from fb %@",my_info);
//return my_info;
[firstView removeFromSuperview];
[self.view addSubview:fourthView];
displayNameLabel.text=[NSString stringWithFormat:@"%@%@",displayNameLabel.text,[my_info objectForKey:@"name"]];
[registerRequest setObject:[my_info objectForKey:@"name"] forKey:@"displayName"];
//[registerRequest setObject:[my_info objectForKey:@"email"] forKey:@"emailId"];
[registerRequest setObject:[my_info objectForKey:@"uid"] forKey:@"uid"];
[SharedPreferenceClass setFBUID:[my_info objectForKey:@"uid"]];// 30 sept
[registerRequest setObject:[my_info objectForKey:@"pic_square"] forKey:@"profilePic"];
NSString* picPath = [my_info objectForKey:@"pic_square"];
if (picPath.length>0) {
[SharedPreferenceClass setUserProfilePictureDefault:picPath];
}else{
[SharedPreferenceClass setUserProfilePictureDefault:@""];
}
//displayName.text=[my_info objectForKey:@"name"];
[self hideActivityIndicator];
}
}];
}
前もって感謝します。