3

この質問を助けてください!アプリ ログイン facebook を作成したいのですが、デバイスに Facebook アプリがインストールされている場合、ユーザーが Facebook にログインするときにアプリが Facebook アプリを呼び出します。Facebook アプリがインストールされていない場合、アプリは sarafi なしでポップアップ ログイン ビューを表示しますか?

4

3 に答える 3

2

共有キットを使用する場合は、SDK の facebook.m クラスに移動して、次のメソッドを見つけます。

- (void)authorize:(NSArray *)permissions
         delegate:(id<FBSessionDelegate>)delegate

次に、最後の行を次のように置き換えます。[self authorizeWithFBAppAuth:YES safariAuth:YES];

この行で: [self authorizeWithFBAppAuth:YES safariAuth:NO; & check.

于 2013-01-10T03:50:56.757 に答える
0

Facebook SDK を使用している場合は、FBSession を使用してセッションを開くことができます。

- (void)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {

// NSLog(@"openSessionWithAllowLoginUI:");

NSArray *permissions = [[NSArray alloc] initWithObjects:

                        @"user_photos",
                        @"publish_actions",
                        @"read_stream",
                        @"friends_photos",
                        @"email" ,

                        nil];//You can add similar permissions according to your app.

[FBSession setActiveSession:[[FBSession alloc] initWithPermissions:permissions]];

[[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorForcingWebView

                          completionHandler:^(FBSession *session,

                                              FBSessionState state,

                                              NSError *error) {

                              NSLog(@" state=%d",state);

                              // handle the completion handler...

                          }];

}

これにより、Facebook アプリが電話にインストールされている場合は開き、ログインしていない場合はポップアップが表示されます。デバイスにネイティブ アプリがインストールされていない場合は、サファリが使用されます。

Facebook でアクションを実行する前に、次を使用して FBSession が開いていてアクティブであるかどうかを必ず確認してください。

于 2013-01-10T05:05:33.470 に答える
0

これにより、Facebook セッションの開始が処理されます。

[FBSession openActiveSessionWithReadPermissions:nil
                                   allowLoginUI:YES
                              completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                  if (status == FBSessionStateOpen || status == FBSessionStateOpenTokenExtended)
                                  {
                                      NSLog(@"Logged in!");
                                  }
}];

アプリのデリゲートがコールバック URL も処理することを確認してください。

- (BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [FBSession.activeSession handleOpenURL:url];
}
于 2013-01-10T04:57:02.993 に答える