6

私のiOSアプリはログインにFacebookを使用していますが、最近、開発チームはすべてのアプリを共通のAPPIDを持つ1つのユニバーサルFacebookアプリに統合することを決定しました。そこで、プロジェクトに参加して、FacebookAppIDとURLタイプを正しいAPP IDに変更しようとしましたが、アプリを実行してログインボタンをクリックすると、Facebookの古いアプリにログインするようにリダイレクトされます。なぜこれが起こっているのか全くわかりませんが、AppDelegateファイルにあるものは次のとおりです。

/*
 Callback for session changes
*/
- (void)sessionStateChanged:(FBSession *)session
                  state:(FBSessionState) state
                  error:(NSError *)error
{
switch (state) {
    case FBSessionStateOpen:
        if (!error) {
            // We have a valid session
            NSLog(@"User session found");
        }
        break;
    case FBSessionStateClosed:
    case FBSessionStateClosedLoginFailed:
        [FBSession.activeSession closeAndClearTokenInformation];
        break;
    default:
        break;
}

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

if (error) {
    UIAlertView *alertView = [[UIAlertView alloc]
                              initWithTitle:@"Error"
                              message:error.localizedDescription
                              delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
    [alertView show];
    }
}

/*
 * Opens a Facebook session and optionally shows the login UX.
 */
- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
    NSArray *permissions = [[NSArray alloc] initWithObjects:
                        @"email",
                        @"user_games_activity",
                        @"user_location",
                        @"user_likes",
                        @"user_birthday",
                        nil];
return [FBSession openActiveSessionWithReadPermissions:permissions
                                          allowLoginUI:allowLoginUI
                                     completionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error) {
                                         [self sessionStateChanged:session
                                                             state:state
                                                             error:error];
                                     }];
}

/*
 * If we have a valid session at the time of openURL call, we handle
 * Facebook transitions by passing the url argument to handleOpenURL
 */
- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {
    // attempt to extract a token from the url
    return [FBSession.activeSession handleOpenURL:url];
}
/*
 *Logout
 *
 */
- (void) closeSession {
    [FBSession.activeSession closeAndClearTokenInformation];
}
4

2 に答える 2

8

デバイスには、アプリケーションInfo.plistに同じFacebookURLスキームを持つ2つのアプリケーションがある可能性があります。次のいずれかを実行できます。

  • 古いアプリを削除するか、
  • 古いアプリを再インストールしますが、事前にInfo.plistファイルからFacebookのURLスキームを削除します

複数のURLスキームがある場合があります。その場合は、 http: //developers.facebook.com/のアプリページに表示されるfbxxxxxxxxxxxのようなものを探す必要があります。

于 2013-03-13T22:17:01.910 に答える
0

UrlSchemeSuffixを使用して、別のアプリケーションで同じFacebookURLスキームを引き続き使用できます。そのために設定することができますFacebook開発者コンソール

次に、Info.plistファイル内:

<key>FacebookUrlSchemeSuffix</key>
<string>$(FACEBOOK_URL_ENV)</string>
<key>CFBundleURLTypes</key>
<array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>FACEBOOK_URL_SCHEME</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>$(FACEBOOK_URL_SCHEME)</string>
            </array>
        </dict>
</array>

カスタム変数のセットアップXCode:ビルド設定>ユーザー定義(新しいユーザー定義設定を追加)

(fbXXXXXXXXXXXXsuffixValueの後にFacebookアプリIDを置き換えます)

ここに画像の説明を入力してください

于 2020-09-02T15:35:38.950 に答える