我正在开发一个使用Facebook登录的Android应用程序。这是我在Android上的第一个Facebook登录集成。我在将facebook登录集成到我的应用程序时遇到了麻烦,因为在我的回调中没有显示登录成功与否。
我从调试签名密钥生成Facebook哈希密钥,并在Facebook开发人员设置中设置凭据,如下所示。
在类名中我设置了com.mmfashionnetwork.ptn.www.mmfashion.LoginActivity这是登录活动,其中存在facebook登录按钮和回调函数。我的默认活动是MainActivity。 Facebook应用程序是测试模式。
这是我的登录活动和回拨功能
public class LoginActivity extends AppCompatActivity {
private EditText tfEmail;
private EditText tfPassword;
private Button btnLogin;
private ProgressDialog loadingDialog;
private TextView tvForgetPassword;
private TextView tvCreateAccount;
private TextView tvTitle;
private Config config;
private LoginButton btnFbLogin;
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
//other steps
setUpFbLoginBtn();
}
private void setUpFbLoginBtn()
{
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(getBaseContext(),"Success",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getBaseContext(),"Canceled",Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
Toast.makeText(getBaseContext(),"Error",Toast.LENGTH_SHORT).show();
}
});
}
}
我还在Android清单文件中设置了所需的凭据。问题是回调函数没有被调用。正如你所看到的那样,我正在根据州的回调来传递信息。如果我尝试登录点击Facebook登录按钮。我在屏幕截图中重定向到Facebook。
单击“确定”时,不会调用任何回调函数。当前截图已经授权。但是当我第一次登录时,当我被重定向到我的应用程序登录活动时,它没有显示任何消息。登录后如何检索数据?在开发人员设置中,我必须设置登录活动类或主要活动类?我试过设置两个替代。两者都给了我相同的结果。
使用此代码进行facebook登录:
public class LoginActivity extends AppCompatActivity {
private EditText tfEmail;
private EditText tfPassword;
private Button btnLogin;
private ProgressDialog loadingDialog;
private TextView tvForgetPassword;
private TextView tvCreateAccount;
private TextView tvTitle;
private Config config;
private LoginButton btnFbLogin;
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setUpFbLoginBtn();
}
private void setUpFbLoginBtn() {
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile, email, user_birthday, user_friends"));
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(getBaseContext(), "Success", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getBaseContext(), "Canceled", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
Toast.makeText(getBaseContext(), "Error", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}