[英]unable to fetch the facebook user profile after login with facebook in android
[英]Android & Facebook: How to login with facebook after buttonClick?
当我启动Login2Activity时,它将打开屏幕,一秒钟后,它将直接打开一个Facebook登录弹出窗口。 我希望单击LoginButton后将打开Facebook登录弹出窗口。 我怎样才能解决这个问题?
public class Login2Activity extends AppCompatActivity {
private LoginButton loginButton;
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_login2);
TextView mTitle = (TextView)findViewById(R.id.textView3);
mTitle.setTypeface(Typeface.createFromAsset(getApplication().getAssets(), "fonts/HELVETICANEUELTSTD-TH.ttf"));
loginButton = (LoginButton)findViewById(R.id.login_btn);
LoginManager.getInstance().logInWithReadPermissions(
this,
Arrays.asList("user_friends"));
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("tagger", "FB onSucces");
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Intent x = new Intent(Login2Activity.this, AddActivity.class);
startActivity(x);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,first_name,last_name,email,gender,birthday,picture,friends");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
Log.d("tagger", "FB onCancel");
Toast.makeText(Login2Activity.this, "Facebook login Cancel", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException e) {
Log.d("tagger", "FB onError");
Toast.makeText(Login2Activity.this, "There is a facebook error", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
如果不初始化facebook sdk,我不知道您的代码如何工作。 这是我正在实现的代码,仅在单击按钮时实现Facebook登录。 应该在setContView之前初始化Facebooksdk。 我相信由于说明的顺序,您的代码可能无法正常工作。
//inside on create
FacebookSdk.sdkInitialize(this.getApplicationContext());
setContentView(R.layout.activity_login);
LoginButton loginButton = (LoginButton) findViewById(R.id.alogin_btn_facebook);
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
callbackManager = CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
...rest of the success/error/cancel code
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.