簡體   English   中英

通過微軟進行 Firebase 身份驗證 - 登錄選項卡未顯示

[英]Firebase authentication via microsoft - Login tab not showing

從 firebaseauth 教程中獲取了一些復制粘貼代碼,以使用 Microsoft 身份驗證連接我的應用程序上的客戶端。 問題是,登錄屏幕沒有顯示

你可以在 這里找到完整的教程。

請注意,我確實復制了所有內容只是為了測試連接(不包括可選代碼,以簡化事情)

firebaseAuth.startActivityForSignInWithProvider 方法中的問題統計信息。 它總是以失敗告終。 跟蹤顯示此消息:“FirebaseAuthException...嘗試獲取您的包證書哈希時出錯。”

我完成了教程中的所有操作,包括在 Microsoft 和 Firebase 身份驗證屏幕上注冊我的應用程序。 我在 android studio 模擬器和實際設備上運行此代碼,結果相同

我的登錄功能:

public void signinToMicrosoft(Activity activity) {

    OAuthProvider.Builder provider = OAuthProvider.newBuilder("microsoft.com");
    Log.e(TAG,"Signing with microsoft");


    Task<AuthResult> pendingResultTask = firebaseAuth.getPendingAuthResult();
    if (pendingResultTask != null) {
        // There's something already here! Finish the sign-in for your user.
        pendingResultTask
                .addOnSuccessListener(
                        new OnSuccessListener<AuthResult>() {
                            @Override
                            public void onSuccess(AuthResult authResult) {
                                Log.e(TAG,"Pending Success");
                                // User is signed in.
                                // IdP data available in
                                // authResult.getAdditionalUserInfo().getProfile().
                                // The OAuth access token can also be retrieved:
                                // authResult.getCredential().getAccessToken().
                            }
                        })
                .addOnFailureListener(
                        new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Log.e(TAG,"Pending Failed: "+e.getMessage());
                                // Handle failure.
                            }
                        });
    } else {
        Log.e(TAG,"No Pending");
        // There's no pending result so you need to start the sign-in flow.
        // See below.
    }

    firebaseAuth
            .startActivityForSignInWithProvider(activity, provider.build())
            .addOnSuccessListener(
                    new OnSuccessListener<AuthResult>() {
                        @Override
                        public void onSuccess(AuthResult authResult) {
                            Log.e(TAG,"Auth Success");
                            // User is signed in.
                            // IdP data available in
                            // authResult.getAdditionalUserInfo().getProfile().
                            // The OAuth access token can also be retrieved:
                            // authResult.getCredential().getAccessToken().
                        }
                    })
            .addOnFailureListener(
                    new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Log.e(TAG,"Auth Failed: "+e.getMessage() + "\nTrace: "+ e.getClass().getCanonicalName());
                            // Handle failure.
                        }
                    });


}

應該打開一個自定義的 chrome 選項卡並允許向 Microsoft 簽名,但它突然彈出並關閉。 如果有人遇到這個問題或為我解決了這個問題,我將不勝感激。 謝謝!

如果有人仍然遇到這個問題,我只想分享我的解決方案和與此類似的問題。

TL; 博士

您的 SHA-1 指紋可能會被另一個 Firebase 項目使用,因此請刪除該指紋或使用不同的密鑰庫進行簽名

長版

我使用不同的 Firebase 項目開發了一個具有開發和生產環境的項目。 我們使用 Firebase Auth 為我們的 Android 應用鏈接 Microsoft 登錄。 我在嘗試設置項目的開發環境時遇到與上述相同的錯誤。 我們過去只有一個 Firebase 環境,所以這從來都不是問題。

事實證明,當您在創建項目時未提供 SHA-1 指紋時,Firebase 會在您運行身份驗證調用時自動添加它們。 這意味着當我們為測試創建調試 APK 時,SHA-1 指紋被記錄到用於實時環境的 Firebase 項目中,因此當您嘗試在另一個項目中添加相同的指紋時,它不會讓您這樣做。 解決方案是在開發環境中包含 SHA-1 指紋,但要這樣做,您需要從實時環境中刪除指紋(在我的情況下)並等待該更改反映。 或者您可以使用不同的、未使用的密鑰庫進行簽名。

您需要在您的 android 上擁有 microsoft(hotmail、outlook ...)帳戶才能解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM