1

私のアプリではFacebookを使用しています。私のアプリと統合されたFBです。ログインも正しく行われます。しかし、ログアウトしようとすると、 fbDidLogoutでログアウトが成功したと表示されますが、再度ログインしようとすると、ログインページが表示され、以前に入力したユーザー名とパスワードでログに記録されます。

どうすれば正しくログアウトできますか。

誰でも助けたり提案したりできます

これが私のコードです

これはログインログアウトボタンのアクションです

- (IBAction)LoginOrLogout 
{
// If the user is not connected (logged in) then connect.  Otherwise logout.
if (!isConnected)
{

    // Set the permissions.
    // Without specifying permissions the access to Facebook is imposibble.
    permissions = [[NSArray arrayWithObjects:@"read_stream", @"publish_stream", nil] retain];

    // Set the Facebook object we declared. We’ll use the declared object from the application
    // delegate.
    facebook = [[Facebook alloc] initWithAppId:@"329082513817407" andDelegate:self];



    [btnPublish setHidden:NO];
    [messageTextField setHidden:NO];

    [facebook authorize:permissions];

    // Change the lblUser label's message.
    [lblUser setText:@"Please wait..."];

    isConnected = YES;
     [self setLoginButtonImage];
}
else 
{
    [facebook logout:self];
    [messageTextField setHidden:YES];

    [lblUser setText:@"Tap on the Login to connect to Facebook"];
    isConnected = NO;
    [self setLoginButtonImage];
}
}

これらは他の方法です

-(void)fbDidLogin
{
// Save the access token key info.
[self saveAccessTokenKeyInfo];

// Get the user's info.
[facebook requestWithGraphPath:@"me" andDelegate:self];
}

 -(void)fbDidNotLogin:(BOOL)cancelled
{
UIAlertView *al = [[UIAlertView alloc] initWithTitle:@"Tonify" message:@"Login cancelled." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[al show];
[self LoginOrLogout];
}

-(void)fbDidLogout
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"defaults fbDidLogout  ........%@",defaults);
if ([defaults objectForKey:@"FBAccessTokenKey"]) 
{
    [defaults removeObjectForKey:@"FBAccessTokenKey"];
    [defaults removeObjectForKey:@"FBExpirationDateKey"];
    [defaults synchronize];
}
NSLog(@"defaults fbDidLogout ........%@",defaults);
NSLog(@"logout success!");

// Keep this for testing purposes.
NSLog(@"Logged out Succes");

// Hide the publish button.
[btnPublish setHidden:YES];
}
4

2 に答える 2

2

次の方法を使用します。

-(void)fbDidLogout
{
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  NSLog(@"defaults fbDidLogout  ........%@",defaults);
  if ([defaults objectForKey:@"FBAccessTokenKey"]) 
  {
      [defaults removeObjectForKey:@"FBAccessTokenKey"];
      [defaults removeObjectForKey:@"FBExpirationDateKey"];
      [defaults synchronize];
  }

  // Hide the publish button.
  [btnPublish setHidden:YES];

   NSHTTPCookie *cookie;
   NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
   for (cookie in [storage cookies])
   {
     NSString* domainName = [cookie domain];
     NSRange domainRange = [domainName rangeOfString:@"facebook"];
     if(domainRange.length > 0)
     {
       [storage deleteCookie:cookie];
     }
   }
 }
于 2012-06-03T13:42:00.520 に答える
0

セーフケースの答えは正しいので、彼のメソッドにこの1行のコードを追加することもできます。

[facebook invalidateSession];

これを使用する場合、これはFBのgraghapi専用です。

于 2012-06-04T07:26:25.317 に答える