在iOS(Facebook和Instagram)中处理不同的URL方案
我甚至不知道该如何定义这个问题,但问题来了 我有一个使用Facebook SDK进行用户登录的应用程序。我学习了Facebook授权教程。我不是100%确定它是如何工作的,但我的“AppDelegate.m”中的这一部分似乎很重要在iOS(Facebook和Instagram)中处理不同的URL方案,ios,appdelegate,openurl,Ios,Appdelegate,Openurl,我甚至不知道该如何定义这个问题,但问题来了 我有一个使用Facebook SDK进行用户登录的应用程序。我学习了Facebook授权教程。我不是100%确定它是如何工作的,但我的“AppDelegate.m”中的这一部分似乎很重要 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [FBSession.activeSession handleOpenURL:url];
}
到目前为止还不错。现在我想为instagram实现一个类似的登录,这样用户就可以访问他们的照片。我运行这个示例时没有遇到任何问题()。当我试图把它导入我的项目时,我被卡住了。因为在instagram项目中,AppDelegate(IGAppDelegate)中还有一个函数
现在我不能使用这个功能(因为它是Facebook的一个副本)
有没有一种方法可以将facebook和instagram的这两个功能结合起来(对于不同的URL,可以使用“如果”)。还是我迷路了
PS:我注意到,当我调用我的facebook登录应用程序时,url类似于
fb4333597123414933://授权//#访问#令牌=Baagki2vhlxubandegkrdoc4gjwuzc2clqlazxz8ixebzbdeyjrd2otagzag2absgvehonkm6xjwzlcalgubgubguqupor6kxu9zbewusnzcue6boxyvx&expires\u in=5166254
在instagram中,它就像:
igfd725621c5e44198a5b8ad3f7a0ffa09://授权访问令牌=354172840.fd72562.bf6b3611632d4d00b6cef660ea9d9b6f我想我找到了
[url方案]给出了这些特定的url方案
Swift:- 例如,在swift应用程序中同时使用Google+和Facebook,它们都需要appDelegate中的OpenURL方法
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?,
annotation: AnyObject?) -> Bool {
println("URL : \(url)")
if(url.scheme!.isEqual("fb1627825840806667")) {
println("Facebook url scheme")
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
} else {
println("Google+ url scheme")
return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)
}
}
适用于Swift 2.0
//MARK: FACEBOOK , GOOGLE CALLBACK URL METHOD
//google-Firebase signin - IOS 8
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
{
let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation)
let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
return facebookDidHandle || googleDidHandle
}
//google-Firebase signin - IOS 9
@available(iOS 9.0, *)
func application(application: UIApplication,
openURL url: NSURL, options: [String: AnyObject]) -> Bool {
let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
return facebookDidHandle || googleDidHandle
}
您在输入图像描述中输入了什么无需。URL方案很重要。
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?,
annotation: AnyObject?) -> Bool {
println("URL : \(url)")
if(url.scheme!.isEqual("fb1627825840806667")) {
println("Facebook url scheme")
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
} else {
println("Google+ url scheme")
return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)
}
}
//MARK: FACEBOOK , GOOGLE CALLBACK URL METHOD
//google-Firebase signin - IOS 8
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
{
let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation)
let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
return facebookDidHandle || googleDidHandle
}
//google-Firebase signin - IOS 9
@available(iOS 9.0, *)
func application(application: UIApplication,
openURL url: NSURL, options: [String: AnyObject]) -> Bool {
let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
return facebookDidHandle || googleDidHandle
}