Facebook登录和谷歌登录之间的冲突 - iOS
我已经通过Facebook在我的应用程序中成功部署了登录。然后,我尝试添加通过Google+登录的可能性,但是在经历了几个漫长的夜晚编码和来自人们的几个帖子之后,我放弃了比现在的例子中存在的路障更高级的内容:How can I login to google-plus using google-plus-ios-sdk-1.7.1 sdk?。Facebook登录和谷歌登录之间的冲突 - iOS
我现在试图通过遵循从Google Developer site看似简单的指令来实施Google登录。
但是,Google解释了这种方式与通过Facebook运行登录所需的设置产生了若干冲突。 我试图通过使用Pod重写Facebook代码,并在安装Google Sign In的同时安装它,但我无法使其工作(仍阻碍通过Facebook进行身份验证)。
实现这样的方式。
- (BOOL) application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
if ([[url scheme] isEqualToString:FBTOKEN]) {
return [FBSession.activeSession handleOpenURL:url];
return [FBAppCall handleOpenURL:url
sourceApplication:sourceApplication
withSession:FBSession.activeSession];
}
else {
[GPPURLHandler handleURL:url sourceApplication:sourceApplication annotation:annotation];
}
return YES;
}
检查是否执行或不GPPURLHandler方法中
-(BOOL) application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
}
-
-
谢谢您的回答。这正是重点。 Facebook需要一个类似的处理程序,就像GooglePlus需要它一样(因此我转向Google登录)。现在您指出要为Google登录使用相同的处理程序。这是我在该方法中的: - – Stefano
// GooglePlus ATTEMPT return [GPPURLHandler handleURL:url sourceApplication:sourceApplication annotation:annotation]; // Facebook返回[[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; – Stefano
我很困惑这两个人如何一起工作,因为到目前为止,只要我取消注释Google块,我从Facebook块中获得了很好的冲突。再次感谢。 – Stefano
我以这种方式实现了谷歌和Facebook
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject) -> Bool {
let options: [String: AnyObject] = [UIApplicationOpenURLOptionsSourceApplicationKey: sourceApplication!,
UIApplicationOpenURLOptionsAnnotationKey: annotation]
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation) ||
GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String, annotation: nil)
}
这与谷歌注册为我工作在2.4.0版和Facebook IOS SDK 4.10.0
1)删除方法
func application(application: UIApplication, openURL url: NSURL, options: [String: AnyObject]) -> Bool
从AppDelegate中
2)实现如下:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
if url.scheme == "fbxxxxxxxxxxxx" {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
else {
let options: [String: AnyObject] = [UIApplicationOpenURLOptionsSourceApplicationKey: sourceApplication!,
UIApplicationOpenURLOptionsAnnotationKey: annotation]
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation) ||
GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String, annotation: nil)
}
}
在FB URL方案是从URL方案采取的Info.plist
@NathanTuggy:感谢您的编辑 – Stefano