Android Facebook 登录无效
Android Facebook Login is not working
我正在开发一个使用 Facebook 登录的 Android 应用程序。这是我在 Android 中的第一个 Facebook 登录集成。我在将 facebook 登录集成到我的应用程序时遇到了问题,因为在我的回调中没有显示登录成功与否。
我从调试签名密钥生成了 Facebook 哈希密钥,并在 Facebook 开发人员设置中设置了凭证,如下所示。
在class名称中我设置了com.mmfashionnetwork.ptn.www.mmfashion.LoginActivity即登录Activity,其中存在facebook登录按钮和回调函数。我的默认 activity 是 MainActivity。 facebook 应用程序是测试模式。
这是我的登录activity和回调函数
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。
当我点击确定时,没有回调函数被调用。当前截图说已经授权。但是,当我第一次登录时,当我被重定向到我的应用程序登录 Activity 时,它也没有显示任何消息。登录后如何检索数据?在开发者设置中,我必须设置 login activity class 或 main activity class?我尝试将两者设置为交替。两者都给了我相同的结果。
使用此代码登录 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);
}
}
我正在开发一个使用 Facebook 登录的 Android 应用程序。这是我在 Android 中的第一个 Facebook 登录集成。我在将 facebook 登录集成到我的应用程序时遇到了问题,因为在我的回调中没有显示登录成功与否。
我从调试签名密钥生成了 Facebook 哈希密钥,并在 Facebook 开发人员设置中设置了凭证,如下所示。
在class名称中我设置了com.mmfashionnetwork.ptn.www.mmfashion.LoginActivity即登录Activity,其中存在facebook登录按钮和回调函数。我的默认 activity 是 MainActivity。 facebook 应用程序是测试模式。
这是我的登录activity和回调函数
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。
当我点击确定时,没有回调函数被调用。当前截图说已经授权。但是,当我第一次登录时,当我被重定向到我的应用程序登录 Activity 时,它也没有显示任何消息。登录后如何检索数据?在开发者设置中,我必须设置 login activity class 或 main activity class?我尝试将两者设置为交替。两者都给了我相同的结果。
使用此代码登录 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);
}
}