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

标签 android facebook

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

我可以通过使用读取权限来接收电子邮件

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();
            }
        }
} 

无需再次登录即可更改权限。
但我的要求是获取电子邮件 ID 并将提要发布到 Facebook。 我知道登录可以与读取权限或发布权限相关联。 我搜索了这个发现一件事是 Session 但是, Facebook 文档说: session 类在最新版本的 SDK 中不再可用 那我该如何执行呢。他们有什么办法吗? 提前致谢..

最佳答案

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

List<String> permissionNeeds = Arrays.asList("publish_actions");

		manager = LoginManager.getInstance();

		manager.logInWithPublishPermissions(this, permissionNeeds);

		manager.registerCallback(callbackManager,
				new FacebookCallback<LoginResult>() {
					@Override
					public void onSuccess(LoginResult loginResult) {
						publishImage();

					}

					@Override
					public void onCancel() {
						System.out.println("onCancel");
					}

					@Override
					public void onError(FacebookException exception) {
						System.out.println("onError");
					}
				});

	}


    private void publishImage() {
		Bitmap image = BitmapFactory.decodeResource(getResources(),
				R.drawable.ic_launcher);

    //You need to get bitmap from any source.

		SharePhoto photo = new SharePhoto.Builder().setBitmap(image)
				.setCaption("Welcome To Facebook Photo Sharing on steroids!")
				.build();

		SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(
				photo).build();

		ShareApi.share(content, null);
		Toast.makeText(this, "Succsesfully posted on your wall",
				Toast.LENGTH_LONG).show();

	}

关于android - Facebook 在 android facebook SDK 4.8.0 中使用读取和发布权限登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34765106/

相关文章:

java - Android 应用随设备语言变化而变化

java - 从 Java 访问 Facebook 营销 API

javascript - angular.element().scope 函数在 fb 脚本中不起作用

Android进度圈波

android - 在 AudioTrack.write 和 AudioFlinger.read 之间

java - Butterknife 上的点击不起作用

javascript - 一旦用户对任何项目进行评分,就从 php 调用 Facebook 共享代码

php - fatal error : Uncaught CurlException: 26: failed creating formpost data thrown

git workflow master 与保持发布

android - 如何从SQLite表中读取一行的多条记录?