簡體   English   中英

Facebook RegisterCallback無法正常運作

[英]Facebook RegisterCallback not working properly

我正在制作一個名為“ BrandShopping”的應用。 該應用程序旨在用於在線交付和購物。 這就是為什么我需要不同的登錄方法,以便用戶可以選擇自己覺得最舒適的原因。

我遇到的問題是我的Facebook登錄名。 我不太了解自己在做什么錯。 我在使用RegisterCallback()函數時遇到了很多問題。

問題是,應用程序被指定為RegisterCallback()與登錄按鈕(在這種情況下, RegisterWithFacebookBtn )。 OnSuccess()方法中,我指定的應用程序調用命名方法FetchUserData()這是應該讀取Facebook的數據庫里的用戶信息。 稍后在該方法中,我使應用程序檢查用戶是否已登錄。如果為truegoto AccountinfoActivity (另一項活動),但從未執行。

我已經嘗試調試應用程序,但是我不明白程序有什么問題。 我確實有一個祝酒詞,如果registerCallback()成功,應該顯示該祝酒詞,但它不顯示祝酒詞。

我的代碼如下:

public class LoginOrSignupActivity extends AppCompatActivity {

    private Button LoginBtn, RegisterWithEmailBtn, RegisterWithGoogleBtn;
    private String Tag;
    private ProgressDialog LoadingBar;
    private LoginButton RegisterWithFacebookBtn;

    private FirebaseDatabase firebasedatabase = 
FirebaseDatabase.getInstance();
    private DatabaseReference database = firebasedatabase.getReference();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_or_signup);

        LoadinGUI(); //LOAD IN THE GRAPHICAL USER INTERFACE

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
          .requestIdToken(getString(R.string.default_web_client_id))
          .requestEmail()
          .build();

        LoginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginOrSignupActivity.this, LogInActivity.class));
            }
        });

        RegisterWithEmailBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginOrSignupActivity.this, RegisterActivity.class));
            }
        });


        RegisterWithFacebookBtn.setOnClickListener(new View.OnClickListener() { //REGISTRATION WITH FACEBOOK
            @Override
            public void onClick(View view) {
              SignInWithFacebook();
            }
        });
    }

    private void SignInWithFacebook(){ //FOR FACEBOOK LOGIN

        CallbackManager callbackManager = CallbackManager.Factory.create();

        RegisterWithFacebookBtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                    Toast.makeText(LoginOrSignupActivity.this, "Part one succeded", Toast.LENGTH_SHORT).show();
                    AccessToken accessToken = loginResult.getAccessToken();
                    FetchUserData(accessToken);
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException error) {
            }
        });
    }

    // FOR FACEBOOK LOGIN, ALSO SAVES TO THE FIREBASE DATABSE
    private void FetchUserData(final AccessToken accessToken){ 
        GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(
              JSONObject object, GraphResponse response
            ) {
              try {
                String name = object.getString("name");
                String email = object.getString("email");
                // ADD MORE HERE

                /* WHEN EVERYTHING IS DONE AND SUCCEEDS, 
                 *   GOTO ACCOUNTINFOACTIVITY ACTIVITY; MAY NEED TO BE
                 * MODIFIED LATER ON 
                 */
                if(accessToken != null) {
                  startActivity(new Intent(LoginOrSignupActivity.this, AccountInfoActivity.class));
                }
              } catch (JSONException e) {
                e.printStackTrace();
              }
            }
        });

        Bundle parameters = new Bundle();
        parameters.putString("fileds", "id,name,emai");
    }

任何和所有幫助將不勝感激

您是否在活動中添加了此內容?

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }

暫無
暫無

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

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