Я пытаюсь использовать Facebook и вход в Google через Firebase для управления пользователями.
P.S. Я следую документации Firebase
Пока все работает хорошо, но у меня проблема ...
1. Я не понимаю, почему каждый раз, когда я нажимаю кнопку входа в facebbok или кнопку входа в Google, я вижу это предупреждение ...
Можно ли показать предупреждение только один раз? что он всегда должен показывать?
2. Приходим ко второй проблеме. Каждый раз, когда мое приложение достигает страницы, на которой пользователь выбирает вход, появляется то же предупреждение, которое я показал вам в верхней части фотографии ... В этом случае пользователь еще не выбрал какой-либо метод входа в систему. Предупреждение Google не должно появляться немедленно. .
Можете ли вы помочь мне с этим?
Это мой код из App Delegate, где находится кнопка Google и установлен Facebook
#import "AppDelegate.h"
@import Firebase;
@import GoogleSignIn;
@import FBSDKCoreKit;
@interface AppDelegate () <GIDSignInDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[FIRApp configure];
// GOOGLE
[GIDSignIn sharedInstance].clientID = [FIRApp defaultApp].options.clientID;
[GIDSignIn sharedInstance].delegate = self;
// FACEBOOK
[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(nonnull UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *, id> *)options {
// FACEBOOK
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
//GOOGLE
[[GIDSignIn sharedInstance] handleURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
return handled;
}
// GOOGLE GIDSignInDelegate
- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error {
if (error == nil) {
GIDAuthentication *authentication = user.authentication;
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken accessToken:authentication.accessToken];
[[FIRAuth auth] signInWithCredential:credential completion:^(FIRUser * _Nullable user, NSError * _Nullable error) {
if (error) {
NSLog(@"Nessun account registrato su FireBase da Google errore: %@", error);
NSLog(@"%@", credential);
return ;
}
NSLog(@"Registrazione Completata");
}];
} else NSLog(@"LOGIN GOOGLE ERRORE %@", error);
}
Это мой viewController с кнопкой facebook
#import "KPValidation.h"
@import Firebase;
@import GoogleSignIn;
@import FBSDKLoginKit;
@import FBSDKCoreKit;
@interface KPValidation () <GIDSignInUIDelegate, FBSDKLoginButtonDelegate>
@end
@implementation KPValidation
- (void)viewDidLoad {
[super viewDidLoad];
[self setupGoogleButton];
[self setupFacebookButton];
}
-(void)setupFacebookButton {
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.delegate = self;
loginButton.translatesAutoresizingMaskIntoConstraints = NO;
loginButton.readPermissions = @[@"email", @"public_profile"];
[self.view addSubview:loginButton];
[loginButton.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor constant:-100].active = YES;
[loginButton.leftAnchor constraintEqualToAnchor:self.view.leftAnchor].active = YES;
[loginButton.rightAnchor constraintEqualToAnchor:self.view.rightAnchor].active = YES;
[loginButton.heightAnchor constraintEqualToConstant:50].active = YES;
}
- (void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error {
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
[[FIRAuth auth] signInWithCredential:credential completion:^(FIRUser *user, NSError *error) {
if (error) {
// ...
return;
}
// User successfully signed in. Get user data from the FIRUser object
// ...
NSLog(@"%@", user.email);
// [self showEmail];
}];
}