您可以通过调用该方法来检查用户是否登录Loginmanger
.登录并读取权限 https://developers.facebook.com/docs/reference/android/current/class/LoginManager/#logInWithReadPermissions,手动启动登录过程,无需按钮。您可以在onCreate
方法。如果用户登录,它立即调用onSuccess
回调方法,您可以在其中调用您的shareDialog
。如果用户未登录,则会显示登录屏幕。如果成功(即用户登录),onSuccess
方法将被调用;
实际上,您可以从代码中删除所有login button
提到,并在末尾添加一行:
LoginManager.getInstance().logInWithReadPermissions(this, "user_friends"); //Log in to FB
您也可以使用 WritePermissions。您可以阅读有关所需权限的信息here https://developers.facebook.com/docs/facebook-login/permissions/v2.3#reference.
这是您的代码,但包装为登录方法,没有任何登录按钮实例。当您需要检查用户是否已登录时,您可以在任何地方调用它。
public void checkLogin() {
//Login Callback registration
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(getApplicationContext(), "in LoginResult on success", Toast.LENGTH_LONG).show();
//Login success - process to Post
if (ShareDialog.canShow(ShareLinkContent.class)) {
String description = "description";
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("title")
.setContentDescription(description)
.setContentUrl(Uri.parse("http://google.com"))
.setImageUrl(Uri.parse("http://google.com"))
.build();
shareDialog.show(linkContent, ShareDialog.Mode.FEED);
}
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "in LoginResult on cancel", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(getApplicationContext(), "in LoginResult on error", Toast.LENGTH_LONG).show();
}
});
LoginManager.getInstance().logInWithReadPermissions(this, "user_friends"); //Log in to FB
}