在android Facebook SDK 4.8.0中使用读取和发布权限登录Facebook

在android Facebook SDK 4.8.0中使用读取和发布权限登录Facebook,android,facebook,Android,Facebook,在我的android应用程序中集成Facebook登录 我的申请中有两个要求 1) 获取登录的用户电子邮件id 2) 向用户Facebook wall发布有关应用程序安装和链接的提要 我可以使用读取权限获取电子邮件 private void fbLogin() { LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList( "public_

在我的android应用程序中集成Facebook登录
我的申请中有两个要求
1) 获取登录的用户电子邮件id
2) 向用户Facebook wall发布有关应用程序安装和链接的提要

我可以使用读取权限获取电子邮件

private void fbLogin() {
    LoginManager.getInstance().logInWithReadPermissions(this,
            Arrays.asList(
                    "public_profile",
                    "user_birthday",
                    "email"
            )
    );
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            SharedPreferences.Editor editor = facebookPreferences.edit();
            AccessToken accessToken = loginResult.getAccessToken();
            if (accessToken != null) {
                fbProfile();
            }
        }
}
private void fbLogin() {
    LoginManager.getInstance().logInWithPublishPermissions(this,
            Arrays.asList(
                    "publish_actions"
            )
    );
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            SharedPreferences.Editor editor = facebookPreferences.edit();
            AccessToken accessToken = loginResult.getAccessToken();
            if (accessToken != null) {
                fbPostAFeed();
            }
        }
} 
private void fbLogin(){
LoginManager.getInstance().logInWithReadPermissions(此,
Arrays.asList(
“公共档案”,
“用户生日”,
“电子邮件”
)
);
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
SharedReferences.Editor=facebookPreferences.edit();
AccessToken AccessToken=loginResult.getAccessToken();
if(accessToken!=null){
fbProfile();
}
}
}
我可以使用发布权限发布提要

private void fbLogin() {
    LoginManager.getInstance().logInWithReadPermissions(this,
            Arrays.asList(
                    "public_profile",
                    "user_birthday",
                    "email"
            )
    );
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            SharedPreferences.Editor editor = facebookPreferences.edit();
            AccessToken accessToken = loginResult.getAccessToken();
            if (accessToken != null) {
                fbProfile();
            }
        }
}
private void fbLogin() {
    LoginManager.getInstance().logInWithPublishPermissions(this,
            Arrays.asList(
                    "publish_actions"
            )
    );
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            SharedPreferences.Editor editor = facebookPreferences.edit();
            AccessToken accessToken = loginResult.getAccessToken();
            if (accessToken != null) {
                fbPostAFeed();
            }
        }
} 
private void fbLogin(){
LoginManager.getInstance().logInWithPublishPermissions(此,
Arrays.asList(
“发布操作”
)
);
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
SharedReferences.Editor=facebookPreferences.edit();
AccessToken AccessToken=loginResult.getAccessToken();
if(accessToken!=null){
fbfeed();
}
}
} 
无需再次登录即可更改权限。
但我的要求是获得电子邮件id,并在Facebook上发布提要。 我知道登录可以与读取权限或发布权限相关联。 我搜索了一下发现一件事是Session但是, Facebook文档说:会话类在最新版本的SDK中不再可用 那我该怎么做呢?他们有什么办法吗。
提前感谢。

您需要添加一些权限并添加下面的代码fr共享源,下面的代码也包含图像。您可以根据需要进行自定义

List permissionNeeds=Arrays.asList(“发布动作”);
manager=LoginManager.getInstance();
manager.logInWithPublishPermissions(这是PermissionRequirements);
manager.registerCallback(callbackManager,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
publishImage();
}
@凌驾
公开作废{
System.out.println(“onCancel”);
}
@凌驾
public void onError(facebook异常){
System.out.println(“onError”);
}
});
}
私有void publishImage(){
位图图像=BitmapFactory.decodeResource(getResources(),
R.可牵引ic_发射器);
//您需要从任何源获取位图。
SharePhoto photo=新建SharePhoto.Builder().setBitmap(图像)
.setCaption(“欢迎使用类固醇分享Facebook照片!”)
.build();
SharePhotoContent内容=新建SharePhotoContent.Builder().addPhoto(
照片)。构建();
ShareApi.share(内容,空);
Toast.makeText(这是“成功贴在墙上”,
Toast.LENGTH_LONG).show();

}
您到底想发布什么?听起来您想自动发布到用户配置文件中,其中包含他安装应用程序的信息?您不允许自动发布,也不允许为用户指定发布消息。@luschn感谢您的重播。。我想要的正是自动发布到用户配置文件。@CBroe感谢您的回复。@CBroe嗯……好吧,如果可能的话,我只是想试试。。