React Native Twitter登录冲突fb和谷歌登录iOS

时间:2017-09-05 22:43:02

标签: ios objective-c react-native twitter-oauth

我知道这个问题,但我对Objective C和iOS原生开发没有经验

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

<h1>Comments</h1>

<div id="comments">
  {{#each comments}}
  <h2><a href="/posts/{{../permalink}}#{{id}}">{{title}}</a></h2>
  <div>{{body}}</div>
  {{/each}}
</div>

如果我同样定义这两个,那么重定向之后的所有oauth请求都会转到功能2.如果我尝试将两者结合起来那么Twitter不工作Twitter只适用于功能2格式

//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];
      }

我无法在功能2中添加额外的参数来支持google或fb login

我如何通过函数重载来处理所有请求但是如何处理?

2 个答案:

答案 0 :(得分:1)

你可以像这样组合它们:

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

答案 1 :(得分:0)

我找到了解决方案

我将它们合并

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

P.S。 我正在使用以下库

反应天然-fbsdk

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

相关问题