代码之家  ›  专栏  ›  技术社区  ›  Arshpreet Wadehra

反应本地Twitter登录冲突fb和谷歌登录iOS

  •  0
  • Arshpreet Wadehra  · 技术社区  · 8 年前

    我知道这个问题,但我没有Objective C和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添加额外参数以支持google或fb登录

    2 回复  |  直到 8 年前
        1
  •  2
  •   zarcode    8 年前

    - (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 signin react native fbsdk react native google signin

        2
  •  1
  •   Arshpreet Wadehra    8 年前

    我找到了解决方案

    我将它们合并

    - (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;
        }
      }
    

    附笔。

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