登录按钮Facebook的Android不重定向到新的活动 [英] Login button facebook android doesn't redirect to new activity
问题描述
当我运行我的Android应用程序,并单击批准的授予权限何尝不是重定向到在MainActivity。的记录中的消息中不目录下载显示出来。我已阅读Facebook的开发者指南,并与我的code到这里堆栈不同的主题。我看不出我已经做错了什么事。
我会帮忙很高兴。
公共类扩展登录活动{/ **
*当第一次创建活动调用。
* / 私人CallbackManager callbackManager;@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
的setContentView(R.layout.activity_login);
最终CallbackManager callbackManager = CallbackManager.Factory.create();
LoginButton loginButton =(LoginButton)findViewById(R.id.login_button);
loginButton.setReadPermissions(public_profile,电子邮件,user_friends);
loginButton.registerCallback(callbackManager,新FacebookCallback< LoginResult>(){
@覆盖
公共无效的onSuccess(LoginResult loginResult){ 意图I =新意图(Login.this,MainActivity.class);
startActivity(ⅰ);
System.out.print(已登录); } @覆盖
公共无效onCancel(){
//应用code } @覆盖
公共无效onerror的(FacebookException除外){
//应用code
Log.i(错误,错误);
}
});
} @覆盖
保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
callbackManager.onActivityResult(要求code,结果code,数据);
}}
堆栈跟踪
了java.lang.RuntimeException:不提供结果ResultInfo {谁= NULL,请求= 64206,结果= -1,数据= {意向(有临时演员)}}到活动组织{一个空对象上尝试调用接口方法'布尔com.facebook.CallbackManager.onActivityResult(INT,INT,android.content.Intent):.MYapp.FBtestApp / org.MYapp.FBtestApp.Login}:显示java.lang.NullPointerException参考
在android.app.ActivityThread.deliverResults(ActivityThread.java:3974)
在android.app.ActivityThread.handleSendResult(ActivityThread.java:4017) 显示java.lang.NullPointerException:引起尝试调用接口方法'布尔com.facebook.CallbackManager.onActivityResult(INT,INT,android.content.Intent)对空对象引用
在org.MYapp.FBtestApp.Login.onActivityResult(Login.java:98)
有关登录工作,你必须从内部<$删除的onActivityResult()
方法C $ C> FacebookCallback anomymous类。
正确的code应该是这样的:
私人CallbackManager callbackManager;@覆盖
公共无效的onCreate(捆绑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,电子邮件,user_friends); loginButton.registerCallback(callbackManager,新FacebookCallback&LT; LoginResult&GT;(){
@覆盖
公共无效的onSuccess(LoginResult loginResult){
意图I =新意图(Login.this,MainActivity.class);
startActivity(ⅰ);
System.out.print(已登录);
} @覆盖
公共无效onCancel(){
//应用code } @覆盖
公共无效onerror的(FacebookException除外){
//应用code
Log.i(错误,错误);
}
});
}@覆盖
保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
super.onActivityResult(要求code,结果code,数据);
callbackManager.onActivityResult(要求code,结果code,数据);
}
When i run my Android app, and click approve to the give permissions it not get redirected to the MainActivity. The "Logged in" message doesn't shows up in the Catlog. I have read the Facebook developers guide, and compared my code to different topics here at Stack. I can't see i have done anything wrong.
I would be very glad for help.
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);
}
}
StackTrace
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity {org.MYapp.FBtestApp/org.MYapp.FBtestApp.Login}: java.lang.NullPointerException: Attempt to invoke interface method 'boolean com.facebook.CallbackManager.onActivityResult(int, int, android.content.Intent)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:3974)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4017)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean com.facebook.CallbackManager.onActivityResult(int, int, android.content.Intent)' on a null object reference
at org.MYapp.FBtestApp.Login.onActivityResult(Login.java:98)
For the login to work, you have to remove the onActivityResult()
method from inside the FacebookCallback
anomymous class.
The correct code should look like this:
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);
}
这篇关于登录按钮Facebook的Android不重定向到新的活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!