阵营本土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 signin, react native fbsdk和react native google signin