0

アプリでFacebookログインに「Graph Api」を使用しています。私は正常にログインし、このコードでログアウトしました

    facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:self.viewController];

すでにFacebookにログインしている場合は、以下のコードを使用します

 if (![facebook isSessionValid]) {

    [facebook authorize:permissions ];
 }

私の問題は、Facebook アプリをインストールし、Facebook アプリ経由でログインしたことです。次に、アプリを実行すると、Facebook に再度ログインするよう求められます。この問題を解決する方法。デフォルトの FB アプリのログイン資格情報として使用する必要があります。この機能を使用する多くのアプリを見ました。誰もが解決策を知っています

4

1 に答える 1

2
  1. In your AppDelegate.m file

define NSString *const FBSessionStateChangedNotification =
          @"com.example:FBSessionStateChangedNotification";
replace com.example with your bundle identifier name

2.- In method
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [FBSession setActiveSession:[FBSession new]];
    if ([FBSession activeSession].state == FBSessionStateCreatedTokenLoaded)
    {
        // means u are already logged in
        //do ur code
        [self openSessionWithAllowLoginUI:NO];
    }
    else
   {      //do ur code
            [self openSessionWithAllowLoginUI:YES];
   }
}
3. whenenever and wherever this method is called after end of switch case write
  - (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error
 {

 [[NSNotificationCenter defaultCenter]
     postNotificationName:FBSessionStateChangedNotification
     object:session];
}

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI
{
    return [FBSession openActiveSessionWithReadPermissions:@"email"
                                              allowLoginUI:allowLoginUI
                                         completionHandler:^(FBSession *session,      FBSessionState state, NSError *error)
            {
                [self sessionStateChanged:session state:state error:error];
            }];
}

Sorry in your appDelegate.h file it should be
extern NSString *const FBSessionStateChangedNotification;
于 2013-08-20T11:06:39.053 に答える