Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook登录不起作用_Android_Facebook_Android Facebook - Fatal编程技术网

Android 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登录按钮和回调函数所在的登录活动。我的默认活

我正在开发一个使用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();
            }
        });
    }

}
公共类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
来完成。。有关更多详细信息,请访问此。