Вход в Facebook / Google с помощью Fireboard показывать всегда оповещение

Я пытаюсь использовать 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];

    }];
}

person kAiN    schedule 22.11.2017    source источник


Ответы (1)


  • Вопрос 1. Вам следует взглянуть на это Дополнительное предупреждение появляется с использованием AppAuth для аутентификации в swift4

  • Вопрос 2: я думаю, что в вашем application:openURL:options: методе вы должны проверить входной URL. Если это URL-адрес Facebook, используйте FBSDKApplicationDelegate, иначе используйте GIDSignIn.

    - (BOOL)application:(nonnull UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *, id> *)options {
    
      if (/*url is Facebook url*/) {
        return [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
      } else {
        return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
      }
    }
    
person trungduc    schedule 24.11.2017