Вход в Facebook с помощью firebase в выпуске ios - PullRequest
0 голосов
/ 12 декабря 2018
let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)

//authenticate with firebase
Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
    if (error == nil) {
        self.fetchProfile(firebaseID: (authResult?.user.uid)!)
    }
}

Я получаю эту ошибку.Пожалуйста, помогите мне решить эту проблему.Я использовал это https://firebase.google.com/docs/auth/ios/facebook-login?authuser=1

Error Domain=FIRAuthErrorDomain Code=17999 "An internal error has occurred, print and inspect the error details for more information." UserInfo={error_name=ERROR_INTERNAL_ERROR, NSLocalizedDescription=An internal error has occurred, print and inspect the error details for more information., NSUnderlyingError=0x604000846cf0 {Error Domain=FIRAuthInternalErrorDomain Code=3 "(null)" UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey={
    code = 403;
    errors = ({
         domain = global;
         message = "Requests to this API identitytoolkit method google.cloud.identitytoolkit.v1.AuthenticationService.SignInWithIdp are blocked.";
         reason = forbidden;
    });
    message = "Requests to this API identitytoolkit method google.cloud.identitytoolkit.v1.AuthenticationService.SignInWithIdp are blocked.";
    status = "PERMISSION_DENIED";
}}}}

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Шаг 1. Добавьте модули, как показано ниже

pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'

Шаг 2. Добавьте в файл Info.plist

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb<Your App id></string>
        </array>
    </dict>
</array>
<key>FacebookAppID</key>
<string><Your App id></string>
<key>FacebookDisplayName</key>
<string><Your DisplayName></string>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>

Шаг 3. Добавьте в свой AppDelegate

import FBSDKCoreKit

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    //Facebook
    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    let handled = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
    return handled
}

Шаг 4. Добавьте это в свой View Controller

import FBSDKLoginKit

class LoginScreenViewController: UIViewController, FBSDKLoginButtonDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        btn_Facebook.addTarget(self, action: #selector(handleCustomFBLogin), for: .touchUpInside)
    }

    ///FACEBOOK LOGIN
    func handleCustomFBLogin(sender:UIButton!){
        FBSDKLoginManager().logIn(withReadPermissions: ["email", "public_profile"], from: self) { (result, err) in
            if(err != nil){
                print("Custom FB Login Failed")
                return
            }
            //print(result?.token.tokenString)
            self.showEmailAddress()
        }
    }

    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!){
        if(error != nil){
            print(error)
            return
        }
        print("Successfully Logged in using facebook")
        showEmailAddress()
    }

    func showEmailAddress(){
        let accesstoken = FBSDKAccessToken.current();
    guard let accessTokenString = accesstoken?.tokenString else {return}

        FBSDKGraphRequest(graphPath: "/me", parameters: ["fields" : "id, name, first_name, last_name, email, birthday, picture"]).start { (connection, result, err) in
            if(err != nil){
                print("Failed to start GraphRequest", err ?? "")
                return
            }
            print(result ?? "") 
        }

    }

    func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!){
        print("Logged out of Facebook")
    }
}
0 голосов
/ 12 декабря 2018

Эта ошибка произошла из-за того, что вы не настроили метод входа в свой проект firebase.Сначала настройте метод входа в свой проект.

Чтобы настроить его, выполните следующие действия:
1 Откройте проект Firebase в браузере
2 Перейдите в раздел аутентификации
3 Выберите SignIn-Method
4 Включите службу входа в Facebook
5 Сохранить
6 Запустите свой проект XCode

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...