将Facebook SDK更新为3.5后无法打开活动会话

ale*_*mix 10 facebook ios

在将Facebook sdk更新为3.5后,当尝试执行openActiveSessionWithReadPermissions时,操作失败.以下是打开会话和处理回调的代码段:

[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;
     }
 }];
Run Code Online (Sandbox Code Playgroud)

我最终在FBSessionStateClosedLoginFailed情况下,我得到一个FBSKLog如下:

FBSDKLog: Cannot use the Facebook app or Safari to authorize, fb123456789012345 is not registered as a URL Scheme
Run Code Online (Sandbox Code Playgroud)

Lol*_*ola 25

我有同样的问题(Facebook SDK 3.5.1)

我的Facebook URL方案位于Info.plist URL方案的第1项.通过将其移动到项目0来解决问题.


Sap*_*van 16

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

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb48524**********</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)


ale*_*mix 10

看来我的URL方案与我的FacebookAppId不匹配.无论出于何种原因,这似乎不是一个问题,但现在是相关的.确保您的Facebook URL Scheme是您的FacebookAppID前缀为fb(在您的.plist文件中).例如:

FacebookAppId:123456789012345

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