阵营本土Twitter的登录冲突FB和谷歌登录iOS版

问题描述:

我知道这个问题,但我有目标C和iOS原生开发没有经验阵营本土Twitter的登录冲突FB和谷歌登录iOS版

我有两个方法同名参数不同

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



    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
               sourceApplication:sourceApplication 
                annotation:annotation 
      ] 
    || [RNGoogleSignin application:application 
         openURL:url 
       sourceApplication:sourceApplication 
         annotation:annotation 
     ]; 
    } 
} 


//function 2 
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { 
     return [[Twitter sharedInstance] application:application openURL:url options:options]; 
     } 

如果我定义两者都是这样,然后所有oauth请求后重定向来功能2.如果我试图结合两个然后twitter不工作Twitter只适用于功能2格式

//combine function 3 
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation options:(NSDictionary<NSString *,id> *)options { 

    NSString *stringurl = url.absoluteString; 
    NSString *sub = @"twitterkit"; 
    NSRange range = [stringurl rangeOfString: sub options: NSCaseInsensitiveSearch]; 
    if (range.location != NSNotFound){ 
    return [[Twitter sharedInstance] application:application openURL:url options:options]; 
    } 
    else{ 
    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
               sourceApplication:sourceApplication 
                annotation:annotation 
      ] 
    || [RNGoogleSignin application:application 
         openURL:url 
       sourceApplication:sourceApplication 
         annotation:annotation 
     ]; 
    } 
} 

我不能添加额外的参数到函数2来支持谷歌或fb登录

我怎样才能处理所有请求也许通过函数重载,但如何?

我找到了解决办法

我将它们合并

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { 
    NSString *stringurl = url.absoluteString; 
    NSString *sub = @"twitterkit"; 
    NSRange range = [stringurl rangeOfString: sub options: NSCaseInsensitiveSearch]; 
    if (range.location != NSNotFound){ 
    return [[Twitter sharedInstance] application:application openURL:url options:options]; 
    } 
    else{ 
     BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey] 
         ] || [RNGoogleSignin application:application 
               openURL:url 
            sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
              annotation:options[UIApplicationOpenURLOptionsAnnotationKey] 
          ];; 
     return handled; 
    } 
    } 

附: 我使用下列库

反应,本机fbsdk

https://differential.com/insights/meteor-google-oauth-from-react-native/ https://github.com/GoldenOwlAsia/react-native-twitter-signin

您可以像这样将它们组合起来:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { 
    BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey] 
        ] || [RNGoogleSignin application:application 
              openURL:url 
            sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
              annotation:options[UIApplicationOpenURLOptionsAnnotationKey] 
          ] 
         || [[Twitter sharedInstance] application:application openURL:url options:options]; 
    return handled; 
} 

我使用:

react native twitter signinreact native fbsdkreact native google signin