[英]Facebook RegisterCallback not working properly
我正在制作一個名為“ BrandShopping”的應用。 該應用程序旨在用於在線交付和購物。 這就是為什么我需要不同的登錄方法,以便用戶可以選擇自己覺得最舒適的原因。
我遇到的問題是我的Facebook登錄名。 我不太了解自己在做什么錯。 我在使用RegisterCallback()
函數時遇到了很多問題。
問題是,應用程序被指定為RegisterCallback()
與登錄按鈕(在這種情況下, RegisterWithFacebookBtn
)。 在OnSuccess()
方法中,我指定的應用程序調用命名方法FetchUserData()
這是應該讀取Facebook的數據庫里的用戶信息。 稍后在該方法中,我使應用程序檢查用戶是否已登錄。如果為true
: goto 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.