【问题标题】:Failing to open active session after updating Facebook SDK to 3.5将 Facebook SDK 更新到 3.5 后无法打开活动会话
【发布时间】:2013-04-19 21:22:49
【问题描述】:

将 Facebook sdk 更新到 3.5 后,尝试执行 openActiveSessionWithReadPermissions 时操作失败。这是用于打开会话和处理回调的 sn-p:

[FBSession openActiveSessionWithReadPermissions:@[@"email", @"user_hometown", @"user_location", @"user_birthday"]
                                   allowLoginUI:YES
                              completionHandler:
 ^(FBSession *session,
   FBSessionState state, NSError *error) {
     switch (state) {
         case FBSessionStateCreatedTokenLoaded:
         case FBSessionStateOpenTokenExtended:
         case FBSessionStateOpen:
         {
             completion(TRUE);
             break;
         }
         case FBSessionStateClosed:
         case FBSessionStateClosedLoginFailed:
             completion(FALSE);
             [FBSession.activeSession closeAndClearTokenInformation];
             break;
         default:
             break;
     }
 }];

我最终遇到了 FBSessionStateClosedLoginFailed 案例,我得到了一个 FBSKLog,如下所示:

FBSDKLog: Cannot use the Facebook app or Safari to authorize, fb123456789012345 is not registered as a URL Scheme

【问题讨论】:

    标签: ios facebook


    【解决方案1】:

    我遇到了同样的问题(Facebook SDK 3.5.1)

    我的 Facebook URL 方案位于 Info.plist URL 方案中的第 1 项。 通过将其移至项目 0 解决了问题。

    【讨论】:

    • 太棒了!但这是为什么呢?
    【解决方案2】:

    我遇到了同样的问题。上面的代码解决了这个问题。你必须用文本编辑器编辑你的 .plist 文件。但是在 Xcode 中你不会看到任何变化。而不是 URL 类型 - CFBundleURLTypes 而不是 URL Schemes 应该是 CFBundleURLSchemes。

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb48524**********</string>
            </array>
        </dict>
    </array>
    

    【讨论】:

    • 也为我工作。愚蠢的 XCode!
    • 这也是我的解决方案。真的很奇怪的错误/问题。
    【解决方案3】:

    我的 URL Scheme 似乎与我的 FacebookAppId 不匹配。无论出于何种原因,这在以前似乎不是问题,但现在很重要。确保您的 Facebook URL Scheme 是带有 fb 前缀的 FacebookAppID(在您的 .plist 文件中)。例如:

    FacebookAppId:123456789012345

    URL 类型 -> 第 0 项 -> URL 方案 -> 第 0 项:fb123456789012345

    【讨论】:

    • 遇到同样的问题。试过这个,但无法摆脱它。请帮忙
    【解决方案4】:
    adding URL Scheme in plist file is solved my problem
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb8947128947(fb<App ID>)</string>
            </array>
        </dict>
    </array>
    </plist>
    

    【讨论】:

      【解决方案5】:

      我遇到了同样的错误,但通过下面的 info.plist 层次结构解决了:

      `
       <key>URL Types</key>
       <array>  
         <dict>
           <key>URL Schemes</key>    
           <array>      
            <string>fb***</string>    
           </array>    
         </dict> 
       </array>
      `
      

      【讨论】:

      • 欢迎来到 StackOverflow!该答案仅讨论它可能会解决问题。如果您还可以合理地说明为什么以及如何解决问题以及为什么会首先发生,那将是很好的。
      【解决方案6】:

      Lola 的回答对我有用。如果您有多个 URL 类型 - 例如Facebook 和您的应用程序的一个 - 为您自己处理的那个人提供一个与您的应用程序包标识符相等的包标识符,然后遍历您的 URL 类型以找到它会很有帮助。

      在我的应用委托开始时,我只是运行:

      NSArray *urlSchemes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"];
      for (NSDictionary *scheme in urlSchemes) {
          if ([[scheme objectForKey:@"CFBundleURLName"] isEqualToString:[[NSBundle mainBundle] bundleIdentifier]]) {
              self.urlScheme = [[scheme objectForKey:@"CFBundleURLSchemes"] objectAtIndex:0];
              break;
          }
      }
      

      然后(因为我们有多个具有不同 FB 应用程序 ID 的环境)

      -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
          if ([url.scheme hasPrefix:@"fb"]) {
              //Facebook callback
              return [FBSession.activeSession handleOpenURL:url];
          // else handle your own URL here
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-22
        • 1970-01-01
        相关资源
        最近更新 更多