2016-08-20 63 views
21

我收到此錯誤。當我嘗試使用Facebook登錄到我的應用程序時。 當我第一次認證它會正確工作。在我解鎖了我的應用程序並嘗試登錄Facebook之後,我收到了此錯誤。登錄錯誤:將您登錄到此應用程序時出錯。請稍後再試

另一個問題:在設備1中進行身份驗證並嘗試在設備2上使用Facebook登錄後,同樣的錯誤也在發生。

我找到的解決方案:當我從Facebook應用程序設置中刪除應用程序認證時,它在上面的場景中工作,但這不是一個好的解決方案,我們如何告訴用戶執行此操作?

btnFbLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(accessToken != null) { 
        boolean expires = accessToken.isExpired(); 
        if(!expires) { 
         performFbLoginOrSignUp(accessToken); 
        } 
       } else { 
        LoginButton loginButton = (LoginButton) findViewById(R.id.login_button); 
        callbackManager = CallbackManager.Factory.create(); 

        if (loginButton != null) { 
         loginButton.setReadPermissions("public_profile", "email", "user_friends"); 

         if (CommonUtil.isConnectingToInternet(LoginActivity.this)) { 
          loginButton.performClick(); 

          loginButton.setPressed(true); 

          loginButton.invalidate(); 

          loginButton.registerCallback(callbackManager, mCallBack); 

          loginButton.setPressed(false); 

          loginButton.invalidate(); 
         } 
        } 
       } 
      } 
     }); 

Error page

在Facebook的例子也有一個問題: GitHub link of Facebook example

重現步驟

  1. 啓動應用程序登錄使用Facebook的身份驗證FB簡介。

  2. Un_install應用程序並重新安裝。

  3. 現在嘗試用Facebook登錄。

  4. 將發生上述錯誤。因爲我們已經驗證過需要訪問fb配置文件。但在這裏我們面臨這個問題。
  5. 這裏已經驗證過的頁面沒有顯示。
  6. 我使用本機FB應用與設備小蜜紅米手機注3
+2

這似乎是與Facebook SDK的錯誤。很多開發者在過去幾天都面臨同樣的問題 https://developers.facebook.com/bugs/297086380683342/ –

+0

我收到了。刪除應用程序似乎只工作一次,然後錯誤再次發生。 – Patrick

+0

@Patrick,是刪除應用程序是好的。我已經在我的問題中提到過了。但這不是一個永久的解決方案。我們不能告訴用戶在這種情況下刪除。 –

回答

1

我也面臨這個問題。更新您在Facebook上的密鑰哈希值

+0

我已經更新了密鑰哈希。對於你更新後的密鑰哈希是否解決了問題? –

+1

雅我的問題是解決後更新密鑰哈希 –

+0

但我沒有解決。檢查此鏈接https://developers.facebook.com/bugs/297086380683342/ 在這裏很多成員面臨同樣的問題。我提供重現步驟,請按照重現步驟進行。 –

1

,因爲你已經驗證通過Facebook和你的代碼的應用程序可能包含身份驗證Facebook的每一次(查找和刪除),就會出現此問題。

遵循以下步驟:

  1. 轉到Facebook的設置。

  2. 刪除您的應用程序。

  3. 確保您已經在Facebook開發者頁面中添加了Facebook登錄,並且您已經啓用了客戶端OAuth登錄。

  4. 轉到您的代碼並覆蓋回調方法:

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
        super.onActivityResult(requestCode, resultCode, data); 
        mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data); 
        if (resultCode == RESULT_OK) { 
         Intent secondActivityIntent = new Intent(this, RedirectActivity.class); 
         startActivity(secondActivityIntent); 
        } 
    } 
    
  5. 在onCreate方法,調用的accessToken:

    accessTokenTracker = new AccessTokenTracker() { 
        @Override 
        protected void onCurrentAccessTokenChanged(
          AccessToken oldAccessToken, 
          AccessToken currentAccessToken) { 
         // Set the access token using 
         // currentAccessToken when it's loaded or set. 
        } 
    }; 
    
    // If the access token is available already assign it. 
    accessToken = AccessToken.getCurrentAccessToken(); 
    
    if (accessToken != null && !accessToken.isExpired()) 
    { 
        GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() { 
         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) { 
          if(null != object) { 
           try 
           { 
            Intent i = new Intent(MainActivity.this, Feedback.class); 
            startActivity(i); 
            String email = object.getString("email"); 
            String birthday = object.getString("birthday"); 
    
           } 
           catch (Exception ex) 
           { 
            Toast.makeText(MainActivity.this, ex.toString(), Toast.LENGTH_SHORT).show(); 
           } 
          } else { 
           // call your authentication process 
    
          } 
         } 
        }); 
        Bundle parameters = new Bundle(); 
        parameters.putString("fields", "id,name,birthday,link"); 
        request.setParameters(parameters); 
        request.executeAsync(); 
    } 
    
+0

上添加了屏幕投影我已經覆蓋了訪問跟蹤器。但沒有解決我的問題 –

+0

第一次我認證成功。當我現在卸載並安裝時,嘗試訪問Fb Login,現在AccessToken.getCurrentAccessToken()爲null。 在nexus設備中它不爲null現在問題在Redmi設備和一些三星設備上也面臨着問題。 –

0
  1. 從Facebook(帳戶)中的用戶設置中刪除應用程序。

  2. 卸載應用程序。

  3. 使用release或new debug keystore獲取新的散列。使用此命令:

    keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64 
    
  4. 在Facebook控制面板上添加新的散列。

+0

沒有人知道我是否應該刪除舊的調試哈希鍵,一旦我在Facebook上生成我的發佈哈希鍵? – jerbotron

+1

更新新的哈希鍵也有同樣的問題 –

0

我在Redmi Note 3上遇到了同樣的問題。在Samsung上測試過。沒問題。不知道它是否是Redmi特有的。

+0

是的它會發生在紅米注3我檢查了Nexus其工作正常 –

+0

我到我測試紅米Note3 :) –

+0

我認爲它與Redmi ROM或一些設置。 Miui論壇已關閉。試圖讓窗口彈出Facebook的安全設置。沒有工作。 –

0

我正面臨同樣的問題。我的keyhashes完美定義,仍然面臨同樣的問題。即使是第一次,我也無法登錄。

解決我的問題是:

  1. 轉到您應用的儀表板here

  2. 在左窗格中,產品標籤下,確保您的Facebook登錄添加。如果沒有,請將其添加到那裏。

如果您所有的其他配置都已到位。它在那之後很完美。

2

這是Facebook的問題。 Facebook團隊確認。

enter image description here

我們預計分辨率:3天內

+0

您確定嗎?現在是否解決了這個問題? –

+0

是的,它已經在那個實例上得到了解決,但是現在還不確定如果你有任何問題在https://developers.facebook.com/bugs / –

0

對我來說,問題是真正與哈希鍵,這不是有效的。

我有完全相同的問題,很難診斷。原因是Facebook在第一次登錄時沒有檢查散列鍵,看起來鍵是正確的,但事實並非如此。其次,錯誤信息僅僅是一種妄想。第三是解決方案:嘗試下面的鏈接,它幫助了我。

Better instructions to generate a valid hash key

相關問題