0
我正在为我的Android应用创建Facebook登录方法。我正在使用我的自定义登录按钮。当Facebook应用程序未安装时,此工作正常,我必须通过触摸登录按钮后出现的界面手动登录。我面临的问题是,这个方法在安装Facebook应用时无法正常工作。在这种情况下,当我触摸登录按钮时,它会启动带有“加载”字样的黑白圆形加载程序,并且该加载程序会一直持续。没有登录发生。我该如何解决它?以下是实施的代码。无法通过Android的Facebook应用登录
内onCreate方法
callbackManager=CallbackManager.Factory.create();
loginButton= (LoginButton)findViewById(R.id.login_button);
btnFBLogin= (TextView) findViewById(R.id.btnFBLogin);
btnFBLogin.setSelected(true);
btnFBLogin.startAnimation(animationButtonFadeIn);
btnFBLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressDialog = new ProgressDialog(LoginActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
loginButton.performClick();
loginButton.setPressed(true);
loginButton.invalidate();
loginButton.registerCallback(callbackManager, mCallBack);
loginButton.setPressed(false);
loginButton.invalidate();
}
});
内的残余方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
private FacebookCallback<LoginResult> mCallBack = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
progressDialog.dismiss();
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
try {
btnFBLogin.setVisibility(View.GONE);
user = new User();
facebook_id = object.getString("id").toString();
user.uniqueID = facebook_id;
full_name = object.getString("name").toString();
user.name = full_name;
try{
email = object.getString("email").toString();
}catch (Exception e){
email = "email_not_provided";
}finally {
user.email = email;
}
PrefUtils.setCurrentUser(user, LoginActivity.this);
userRecord(facebook_id, full_name, email, "fb", null);
}catch (Exception e){
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
progressDialog.dismiss();
}
@Override
public void onError(FacebookException e) {
progressDialog.dismiss();
}
};
谢谢,它的工作......! :) 其实我已经输入了正确的哈希键,我从Android的单例类中收到了,但还有一个键还没有添加到Facebook开发者控制台。我在facebook登录身上获得了此密钥以及我添加到控制台的错误消息。 – harshvardhan