Java 登录按钮facebook android不';不要重定向到新活动
当我运行我的Android应用程序,并单击“批准”以授予权限时,它不会被重定向到MainActivity。“登录”消息不会显示在Catlog中。我已经阅读了Facebook开发者指南,并将我的代码与Stack中的不同主题进行了比较。我看不出我做错了什么 我很高兴能得到帮助Java 登录按钮facebook android不';不要重定向到新活动,java,android,facebook,facebook-android-sdk,Java,Android,Facebook,Facebook Android Sdk,当我运行我的Android应用程序,并单击“批准”以授予权限时,它不会被重定向到MainActivity。“登录”消息不会显示在Catlog中。我已经阅读了Facebook开发者指南,并将我的代码与Stack中的不同主题进行了比较。我看不出我做错了什么 我很高兴能得到帮助 public class Login extends Activity { /** * Called when the activity is first created. */ private Callba
public class Login extends Activity {
/**
* Called when the activity is first created.
*/
private CallbackManager callbackManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_login);
final CallbackManager callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("public_profile", "email", "user_friends");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Intent i = new Intent(Login.this, MainActivity.class);
startActivity(i);
System.out.print("Logged in");
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
Log.i("Error" , "Error");
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
要使登录生效,必须从
FacebookCallback
anomymous类中删除onActivityResult()
方法。
正确的代码应如下所示:
private CallbackManager callbackManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("public_profile", "email", "user_friends");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Intent i = new Intent(Login.this, MainActivity.class);
startActivity(i);
System.out.print("Logged in");
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
Log.i("Error" , "Error");
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
private CallbackManager CallbackManager;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
sdkinInitialize(getApplicationContext());
callbackManager=callbackManager.Factory.create();
LoginButton LoginButton=(LoginButton)findViewById(R.id.login_按钮);
setReadPermissions(“公共档案”、“电子邮件”、“用户朋友”);
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
意图i=新意图(Login.this,MainActivity.class);
星触觉(i);
系统输出打印(“登录”);
}
@凌驾
公开作废{
//应用程序代码
}
@凌驾
public void onError(facebook异常){
//应用程序代码
Log.i(“错误”、“错误”);
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
首先,插入privateprivate CallbackManager CallbackManager代码>
输入代码。它应该是这样的:
private CallbackManager callbackManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("public_profile", "email", "user_friends");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Intent i = new Intent(Login.this, MainActivity.class);
startActivity(i);
System.out.print("Logged in");
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
Log.i("Error" , "Error");
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
然后添加FacebookSdk.sdkinInitialize(getApplicationContext())代码>
在super.onCreate(savedInstanceState)之前代码>
试试这个希望吧,这很管用,以下几点对我很管用:
增加:
FacebookSdk.sdkInitialize(getApplicationContext());
之前:
super.onCreate(savedInstanceState);
这很奇怪,因为早些时候一切都很顺利;但是突然,我有了这个问题。现在,上面提到的解决方案解决了这个问题。当您只提供代码时,很难为您提供帮助。日志中有错误吗?是否有空参数(特别是“resultCode”和“data”)?我建议您在提出问题后不要更新代码。接受的答案现在不再有意义。错误:无法解析symbol callbackManager callbackManager。onActivityResult(requestCode、resultCode、data)}编辑:缺少TOP中的更新创建callbackManager成员变量。看看我的代码,我已经编辑过了(第1行和第9行)。你错过了一点我的代码。更改行:final CallbackManager CallbackManager=CallbackManager.Factory.create();to:callbackManager=callbackManager.Factory.create();也不要忘记super.onActivityResult(请求代码、结果代码、数据);在onActivityResult()中。我没想到这会起作用,我不明白为什么在移动到super.onCreate(savedInstanceState)之前后会起作用代码>