Социальный вход в IOS с использованием Swfit

Ну, это общий вопрос, чего я хочу, если кто-нибудь войдет в мою учетную запись с использованием Google-Auth/Email-пароля, и я тоже смогу получить информацию о профиле Facebook? Верны ли эти шаги:

  1. Войдите в систему с помощью Google и вставьте запись в Firebase.
  2. В разделе «Редактирование профиля» есть кнопка «Получить данные Facebook».
  3. При нажатии кнопки с помощью FBSDKLoginManager я подключаюсь к профилю пользователя fb и делаю FBSDKGraphRequest.
  4. После получения результата сохраните его в базе данных.

Предложите другой способ, если это возможно?!


person Tanmay Verma    schedule 15.09.2017    source источник
comment
вы правильно получаете социальные данные или нет?   -  person Shobhakar Tiwari    schedule 15.09.2017
comment
Да, я понимаю это правильно, но я сомневаюсь, создаст ли он два сеанса или нет?   -  person Tanmay Verma    schedule 17.09.2017
comment
зачем тебе две разные сессии   -  person Shobhakar Tiwari    schedule 17.09.2017
comment
Мне не нужен сеанс, мне просто нужны данные профиля пользователя FB.   -  person Tanmay Verma    schedule 19.09.2017
comment
Позвольте мне ответить на ваш вопрос, я недавно сделал   -  person Shobhakar Tiwari    schedule 19.09.2017
comment
Танмай Верма Проверьте мой ответ   -  person Shobhakar Tiwari    schedule 19.09.2017


Ответы (1)


Вот рабочий код Xcode 8.3 вместе с Swift 3.1:

Выполните следующие действия, чтобы получить данные Facebook:

Шаг 1:

import FBSDKCoreKit

import FBSDKLoginKit

Шаг 2: Соответствует делегату.

FBSDKLoginButtonDelegate

Шаг 3: Кнопка входа в систему Метод IBAction.

//Действие входа в Facebook

  @IBAction func facebookLoginAction(_ sender: Any) {

        //Fb login process
        let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
        fbLoginManager.loginBehavior = .native

        fbLoginManager.logOut()
        fbLoginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) -> Void in
            if (error == nil){
                let fbloginresult : FBSDKLoginManagerLoginResult = result!
                if fbloginresult.isCancelled {

                }
                else if (fbloginresult.declinedPermissions != nil){
                    if(fbloginresult.grantedPermissions.contains("email")) {
                        self.getFBUserData()
                    }
                }

            }
        }

    }

Шаг 4: Получите данные Facebook следующим образом.

  func getFBUserData(){
        if((FBSDKAccessToken.current()) != nil){
            FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"first_name, last_name,email, picture.type(large),gender"]).start(completionHandler: { (connection, result, error) -> Void in
                if (error == nil){
                    let newResult = result as AnyObject
                    let email = newResult["email"] as? String ?? ""
                    print("Your Email = \(email)")
                    let firstName = newResult["first_name"] as? String ?? ""
                    let lastName  = newResult["last_name"] as? String ?? ""
                    print(FBSDKAccessToken.current())
                    let gender = newResult["gender"] as? String ?? ""
                    let id = newResult["id"] as? String ?? ""
                    print("the access token is \(FBSDKAccessToken.current().tokenString)")

                    let accessToken = FBSDKAccessToken.current().tokenString
                    //self.signInUser()

                }
            })
        }
    }

Не стесняйтесь комментировать это, надеюсь, это решит вашу проблему. Спасибо

person Shobhakar Tiwari    schedule 19.09.2017
comment
Это должен быть принятый ответ. @Shobhakar Tiwari Спасибо. - person Naveed Ahmad; 11.10.2018