在没有安装本机应用程序的情况下使用 Facebook 4.0 在 Facebook 上共享照片
Share Photo on Facebook using Facebook 4.0 without native app installed
我正在使用 Facebook 4.0 通过我的应用分享照片,但我无法分享我 phone 中的照片。我可以通过提供 url 来分享来自互联网的图像,但它不适用于来自 phone 的图像。下面是我用来分享的代码。
public void sharePhoto(Uri contentUri, String contentTitle, Bitmap image, String contentDescription){
ShareDialog facebookDialog = new ShareDialog(getActivity());
ShareLinkContent.Builder content = new ShareLinkContent.Builder();
content.setContentUrl(contentUri);
content.setContentTitle(contentTitle);
content.setImageUrl(getImageUri(getActivity(), image));
content.setContentDescription(contentDescription);
ShareLinkContent shareContent = content.build();
facebookDialog.show(shareContent);
}
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
我知道我可以使用以下
从 phone 共享位图
public void shareImage(Bitmap image){
ShareDialog facebookDialog = new ShareDialog(getActivity());
SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();
SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();
facebookDialog.show(content);
}
但是,此代码需要在 phone 上安装本机 facebook 应用程序。有什么方法可以在不安装本机应用程序的情况下共享位图。
如果未安装本机应用程序,共享位图的唯一其他方法是获得用户的 publish_actions
许可,然后执行 POST 到 me/photos(您可以使用 ShareApi class 为你做实际的 post,但你仍然需要征得用户的许可)。遗憾的是,基于 Web 的对话框不支持上传二进制数据。
使用 fb sdk 共享多张图片,但没有安装原生 facebook。先登录再使用以下功能
private void postPhoto() {
ArrayList<SharePhoto> photos = new ArrayList<>();
SharePhoto sharePhoto1 = new SharePhoto.Builder().setBitmap(image1).build();
SharePhoto sharePhoto = new SharePhoto.Builder().setBitmap(image).build();
photos.add(sharePhoto);
photos.add(sharePhoto1);
SharePhotoContent sharePhotoContent =
new SharePhotoContent.Builder().setPhotos(photos).build();
ShareApi.share(sharePhotoContent, shareCallback);
}
我正在使用 Facebook 4.0 通过我的应用分享照片,但我无法分享我 phone 中的照片。我可以通过提供 url 来分享来自互联网的图像,但它不适用于来自 phone 的图像。下面是我用来分享的代码。
public void sharePhoto(Uri contentUri, String contentTitle, Bitmap image, String contentDescription){
ShareDialog facebookDialog = new ShareDialog(getActivity());
ShareLinkContent.Builder content = new ShareLinkContent.Builder();
content.setContentUrl(contentUri);
content.setContentTitle(contentTitle);
content.setImageUrl(getImageUri(getActivity(), image));
content.setContentDescription(contentDescription);
ShareLinkContent shareContent = content.build();
facebookDialog.show(shareContent);
}
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
我知道我可以使用以下
从 phone 共享位图public void shareImage(Bitmap image){
ShareDialog facebookDialog = new ShareDialog(getActivity());
SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();
SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();
facebookDialog.show(content);
}
但是,此代码需要在 phone 上安装本机 facebook 应用程序。有什么方法可以在不安装本机应用程序的情况下共享位图。
如果未安装本机应用程序,共享位图的唯一其他方法是获得用户的 publish_actions
许可,然后执行 POST 到 me/photos(您可以使用 ShareApi class 为你做实际的 post,但你仍然需要征得用户的许可)。遗憾的是,基于 Web 的对话框不支持上传二进制数据。
使用 fb sdk 共享多张图片,但没有安装原生 facebook。先登录再使用以下功能
private void postPhoto() {
ArrayList<SharePhoto> photos = new ArrayList<>();
SharePhoto sharePhoto1 = new SharePhoto.Builder().setBitmap(image1).build();
SharePhoto sharePhoto = new SharePhoto.Builder().setBitmap(image).build();
photos.add(sharePhoto);
photos.add(sharePhoto1);
SharePhotoContent sharePhotoContent =
new SharePhotoContent.Builder().setPhotos(photos).build();
ShareApi.share(sharePhotoContent, shareCallback);
}