Android Facebook登录不起作用
我正在开发一个使用Facebook登录的Android应用程序。这是我第一次在Android上集成Facebook登录。我在将facebook登录集成到我的应用程序时遇到问题,因为在我的回调中没有显示登录是否成功 我从调试签名密钥生成Facebook哈希密钥,并在Facebook开发者设置中设置凭据,如下所示 在类名中,我设置com.mmfashionnetwork.ptn.www.mmfashion.LoginActivity,这是facebook登录按钮和回调函数所在的登录活动。我的默认活动是MainActivity。facebook应用程序是测试模式 这是我的登录活动和回调函数Android Facebook登录不起作用,android,facebook,android-facebook,Android,Facebook,Android Facebook,我正在开发一个使用Facebook登录的Android应用程序。这是我第一次在Android上集成Facebook登录。我在将facebook登录集成到我的应用程序时遇到问题,因为在我的回调中没有显示登录是否成功 我从调试签名密钥生成Facebook哈希密钥,并在Facebook开发者设置中设置凭据,如下所示 在类名中,我设置com.mmfashionnetwork.ptn.www.mmfashion.LoginActivity,这是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();
}
});
}
}
公共类LoginActivity扩展了AppCompatActivity{
私人电子邮件;
私人编辑文本和密码;
私人按钮;
私有进程对话框加载对话框;
私有文本视图tvForgetPassword;
私有文本视图tvCreateAccount;
私有文本视图tvTitle;
私有配置;
私人登录按钮btnFbLogin;
私人CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
//其他步骤
setUpFbLoginBtn();
}
私有void setUpFbLoginBtn()
{
callbackManager=callbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
Toast.makeText(getBaseContext(),“Success”,Toast.LENGTH_SHORT.show();
}
@凌驾
公开作废{
Toast.makeText(getBaseContext(),“Cancelled”,Toast.LENGTH_SHORT.show();
}
@凌驾
public void onError(facebook异常错误){
Toast.makeText(getBaseContext(),“Error”,Toast.LENGTH_SHORT.show();
}
});
}
}
我还在Android清单文件中设置了所需的凭据。问题是没有调用回调函数。正如你们所看到的,我正在根据状态在回调中祝酒。如果我尝试登录,请单击Facebook登录按钮。我被重定向到Facebook,如截图所示
当我单击ok时,不会调用回调函数。当前屏幕截图显示已授权。但当我第一次登录时,当我被重定向到我的应用程序登录活动时,它也没有显示任何消息。登录后如何检索数据?在开发人员设置中,我必须设置登录活动类还是主活动类?我试着把两个都设置为备用。两者都给了我相同的结果。在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);
}
}
公共类LoginActivity扩展了AppCompatActivity{
私人电子邮件;
私人编辑文本和密码;
私人按钮;
私有进程对话框加载对话框;
私有文本视图tvForgetPassword;
私有文本视图tvCreateAccount;
私有文本视图tvTitle;
私有配置;
私人登录按钮btnFbLogin;
私人CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
setUpFbLoginBtn();
}
私有void setUpFbLoginBtn(){
callbackManager=callbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this、Arrays.asList(“公共档案、电子邮件、用户生日、用户朋友”);
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
Toast.makeText(getBaseContext(),“Success”,Toast.LENGTH_SHORT.show();
}
@凌驾
公开作废{
Toast.makeText(getBaseContext(),“Cancelled”,Toast.LENGTH_SHORT.show();
}
@凌驾
public void onError(facebook异常错误){
Toast.makeText(getBaseContext(),“Error”,Toast.LENGTH_SHORT.show();
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
}
但是如何在onActivityResult中检查facebook结果呢?@WaiYanHein您可以通过设置自己的requestCode
来完成。。有关更多详细信息,请访问此。