在iOS上集成Facebook和Google登录react-native - AppDelegate.m回调函数

1szpjjfi  于 2023-01-05  发布在  React
关注(0)|答案(3)|浏览(228)

在AppDelegate.m中集成google和facebook登录的问题有两个方面:
一、有条件处理开盘,我通过以下方式进行管理:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

  NSString *stringURL = [ url absoluteString];

  if([stringURL containsString:@"fb"])
    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                        openURL:url
                                              sourceApplication:sourceApplication
                                                     annotation:annotation];
  else return [[GIDSignIn sharedInstance] handleURL:url
                           sourceApplication:sourceApplication
                                         annotation:annotation];

}

II.处理用户登录后的回调。这一点,我无法在两者同时工作的情况下做到。其中一个或另一个被禁用。它们的代码片段如下:

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

// Google 
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  BOOL handled = [[GIDSignIn sharedInstance] handleURL:url
                                     sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                            annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
  return handled;
}

如果我删除最后一部分,Facebook回拨会起作用。但我真的希望两者都能起作用:)有人能帮忙吗?

46scxncf

46scxncf1#

你可以这样查
在didFinishLaunchingWithOptions方法中

[[FBSDKApplicationDelegate sharedInstance] application:application
                             didFinishLaunchingWithOptions:launchOptions];

用于处理FACEBOOK

#pragma -mark
#pragma -mark FACEBOOK Sign-In configuration

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
                                                                  openURL:url
                                                        sourceApplication:sourceApplication
                                                               annotation:annotation
                    ];
    // Add any custom logic here.

    return handled;
}


- (BOOL)application:(UIApplication *)app
                openURL:(NSURL *)url
                options:(NSDictionary *)options {

    if ([[url scheme] isEqualToString:@"fb*************"]) {
        return [[FBSDKApplicationDelegate sharedInstance] application:app
                                                              openURL:url
                                                    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                                           annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];

    }else
    {

        return [[GIDSignIn sharedInstance] handleURL:url
                                   sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                          annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
    }
}
pxyaymoc

pxyaymoc2#

试试这个

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
       sourceApplication:(NSString *)sourceApplication
        annotation:(id)annotation {

       if ([FBAppCall handleOpenURL:url sourceApplication:sourceApplication])
       return [[FBSDKApplicationDelegate 
       sharedInstance]application:application openURL:url 
       sourceApplication:sourceApplication annotation:annotation];

      else{

      return [[GIDSignIn sharedInstance] handleURL:url
                           sourceApplication:sourceApplication
                                  annotation:annotation];
      }
      }
wn9m85ua

wn9m85ua3#

此解决方案对我很有效:
来源:https://github.com/facebookarchive/react-native-fbsdk/issues/770
必须在appdelegate. m中修改openUrl函数
代码:

- (BOOL)application:(UIApplication *)application
   openURL:(NSURL *)url
   options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  if ([[FBSDKApplicationDelegate sharedInstance] application:application
                                                      openURL:url
                                                      options:options]) {
     return YES;
  }
  return [RCTLinkingManager application:application openURL:url options:options];
}

相关问题