首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IOS-应用程序授权后的Facebook空白屏幕

IOS-应用程序授权后的Facebook空白屏幕
EN

Stack Overflow用户
提问于 2015-11-03 13:05:24
回答 1查看 3.2K关注 0票数 6

我正在从Parse 1.6.4升级到最新版本,我还将facebook升级到v4.7。问题是在应用程序被授权后,它会显示一个空白的白屏幕,如果我点击“完成”,它就会关闭safari,在日志中显示,用户取消了登录。

在升级到新版本之前,它运行良好。

我的褶皱

代码语言:javascript
复制
<key>CFBundleURLTypes</key>
 <array>
  <dict>
   <key>CFBundleURLSchemes</key>
 <array>
 <string>fbxxxxxx</string>
 </array>
 </dict>
</array>
<key>FacebookAppID</key>
<string><my FacebookAppID></string>
<key>FacebookDisplayName</key>
<string>my appname</string>

白清单FB服务器

代码语言:javascript
复制
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>facebook.com</key>
<dict>
  <key>NSIncludesSubdomains</key>
  <true/>
  <key>NSExceptionRequiresForwardSecrecy</key>
  <false/>
</dict>
<key>fbcdn.net</key>
<dict>
  <key>NSIncludesSubdomains</key>
  <true/>
  <key>NSExceptionRequiresForwardSecrecy</key>
  <false/>
</dict>
<key>akamaihd.net</key>
<dict>
  <key>NSIncludesSubdomains</key>
  <true/>
  <key>NSExceptionRequiresForwardSecrecy</key>
  <false/>
</dict>
代码语言:javascript
复制
<key>LSApplicationQueriesSchemes</key>
 <array>
  <string>fbapi</string>
  <string>fb-messenger-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array>

AppDelegate.m

代码语言:javascript
复制
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                         openURL:url
                                               sourceApplication:sourceApplication
                                                      annotation:annotation];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
  [FBSDKAppEvents activateApp];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                    didFinishLaunchingWithOptions:launchOptions];
}

viewController.m

代码语言:javascript
复制
-(IBAction)facebookLogin:(id)sender
{
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

    if ([FBSDKAccessToken currentAccessToken])
    {
        //Do something

    }
    else
    {
        [login logInWithReadPermissions:@[@"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
         {
             if (error)
             {
                 NSLog(@"Error");
             }
             else if (result.isCancelled)
             {
                 NSLog(@"User cancelled login");
             }
             else
             {
                 NSLog(@"Login Success");

                 if ([result.grantedPermissions containsObject:@"email"])
                 {
                     NSLog(@"result is:%@",result);

                 }
                 else
                 {
                     NSLog(@"FB email permission error");

                 }
             }
         }];
    }
}

这是屏幕的图像。

我正在我的IPhone 6设备上运行这个测试应用程序。

谢谢!:)

编辑1: 今天,我把我的项目升级到了Facebook的新版本4.8 SDk,这一次,它看起来很管用。 我不确定,当时我做错了什么,但现在它对arm64设备起作用了。 但是当我启用对armv7s的支持时,它给了我这个错误.

代码语言:javascript
复制
ld: file is universal (4 slices) but does not contain a(n) armv7s slice:

它指向FBSDKLoginKit.framework。

不再支持armv7s设备了吗?

不管怎么说,有这个错误吗?

谢谢!:)

EN

回答 1

Stack Overflow用户

发布于 2016-07-07 06:57:08

我也有同样的问题,结果发现

代码语言:javascript
复制
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 

在ios 9.0中被废弃。我也实现了这个方法。

代码语言:javascript
复制
func application(application: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool 

因此,FB调用了后者。因此,我必须确保在这两种方法中调用FBSDKApplicationDelegate (一次用于ios 8,一次用于ios9)。

下面是我的AppDelegate实现:

代码语言:javascript
复制
 @available(iOS 9.0, *)
func application(application: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    let handled = FBSDKApplicationDelegate.sharedInstance().application(application,
                                                                        openURL: url,
                                                                        sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String,
                                                                        annotation: options [UIApplicationOpenURLOptionsAnnotationKey])
    if !handled {
        return self.openURL(url)
    }
    return true
}

@available(iOS, introduced=8.0, deprecated=9.0)
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    let handled = FBSDKApplicationDelegate.sharedInstance()
        .application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
    if !handled {
        return self.openURL(url)
    }
    return true
}

其中self.openURL( url )可以用来处理facebook之外的其他url类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33499905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档