我甚至不确定如何定义问题,但在这里它。
我有一个使用Facebook SDK进行用户登录的应用程序。我按照Facebook授权教程。我不是100%确定它是如何工作的但是我的“AppDelegate.m”中的这一部分似乎很重要。
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [FBSession.activeSession handleOpenURL:url];
}
到现在为止还挺好。现在我想为instagram实现类似的登录,以便用户可以访问他们的照片。我运行这个例子没有问题(https://github.com/crino/instagram-ios-sdk)。当我试图将它导入我的项目时,我陷入困境。因为在instagram项目中AppDelegate中还有一个函数(IGAppDelegate)
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [self.instagram handleOpenURL:url];
}
现在我不能使用这个功能(因为它是Facebook的副本)有没有办法将这两个功能结合到facebook和instagram(对于不同的URL可能有“if”)。或者我输了
PS:我注意到当我打电话给我的facebook登录应用程序时,网址就像是
fb4333597123414933://授权/#=的access_token&BAAGKI2vHLxUBANbDegkrdoc4GJWUZC2clqLAzxz8IxEBZBdEyjrD2oTaGZA0g2AbSGWgvEhONKM6xJWzLCALGUBguqUpor6kXu9ZBewusNZCUe6BOXYvX = expires_in 5166254
在Instagram中它就像:
igfd725621c5e44198a5b8ad3f7a0ffa09://authorize#access_token=354172840.fd72562.bf6b3611632d4d00b6cef660ea9d9b6f
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"url: %@", [url scheme]);
BOOL callBack;
// Facebook Call back checking.
if ([[url scheme] isEqualToString:@"facebook_url_schema"])
{
callBack = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
}
// Instagram call back checking.
else if ([[url scheme] isEqualToString:@"instagram_url_schema"])
{
callBack = [self.instagram handleOpenURL:url];
}
return callBack;![enter image description here][1]
}
斯威夫特: -
在swift app中同时使用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
}