Reputation: 993
I am using Xcode 7 to write an app targeted to iOS7, using Facebook iOS idk v4.1. When I execute a facebook login, [FBSDKAccessToken currentAccessToken] is still nil in the FBSDKLoginButton callback. I have tried several SO solutions for fixing this, but none has worked for me so far.
I think the problem is in my appDelegate. Here is my code:
- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
//for Facebook signin
if([[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation])
{
return YES;
}
//for Google Signin on iOS 8 and earlier
else
{
NSDictionary* options = @{UIApplicationOpenURLOptionsSourceApplicationKey:sourceApplication, UIApplicationOpenURLOptionsAnnotationKey:annotation};
return [self application:application openURL:url options:options];
}
}
//iOS 9 and later
//for Google Signin
- (BOOL) application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
{
if ([[[NSUserDefaults standardUserDefaults] objectForKey:UDLoginType] integerValue] == ltGoogle)
{
return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}
else
{
return YES;
}
}
When my app returns from Facebook, application:openURL:options (iOSv9+) is called. That method contains no calls to the Facebook sdk. There is a call to the Facebook sdk in application:openURL:sourceApplication:annotation (iOSv8-), but I don’t know how to translate that into the iOSv9 call, as Google does. So as far as I can tell, there’s no processing of the login URL after a Facebook login. What am I doing wrong?
Thanks
Upvotes: 2
Views: 298
Reputation: 3875
Here is how you could implement for ios 9+
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
return [[FBSDKApplicationDelegate sharedInstance] application:app
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]
|| [[GIDSignIn sharedInstance] handleURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
}
for below ios 9
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
] ||
[[GIDSignIn sharedInstance] handleURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
Upvotes: 4