facebook 分享
在 Android 平台分享
本指南详细介绍如何通过 Android 应用将内容分享到 Facebook。用户通过您的应用分享时,相关内容会在其时间线上显示,并且可能在其好友的动态消息中显示。
用户还可通过您的应用将内容分享到 Facebook Messenger。
前提条件
您将需要执行以下操作,才能通过应用将内容分享到 Facebook:
- 将 Android 版 Facebook SDK 添加到您的移动开发环境中
- 获取正确配置并链接到 Android 应用的 Facebook 应用编号。请参阅 Android 新手入门,添加 Facebook 应用编号
- 生成 Android 密钥哈希并添加到开发者资料页
- 添加
Facebook Activity
:将其纳入AndroidManifest.xml
中
如需详细了解这些要求,请参阅 Android 新手入门。
您还需要在 AndroidManifest.xml
中设置 ContentProvider
,其中 {APP_ID}
是您的应用编号:
- <provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
- android:name="com.facebook.FacebookContentProvider"
- android:exported="true"/>
实施分享时,应用不应预填写任何分享内容,否则将违反 Facebook 开放平台政策,请参阅 Facebook 开放平台政策第 2.3 条。
内容建模
Facebook SDK 4.0+ 版本提供用于分享内容的新模型。用户想要分享的每种内容类型都有一个可用于表示该内容类型的类。对内容建模后,将分享界面添加到应用。
链接
用户通过您的应用将链接分享到 Facebook 时,会包括在帖子中显示的属性:
contentURL
,要分享的链接contentTitle
,表示链接中的内容的标题imageURL
,将在帖子中显示的缩略图的网址- 内容的
contentDescription
,通常为 2-4 个句子
按 ShareLinkContent
模型构建链接的分享内容。如需了解完整的属性列表,请参阅ShareLinkContent
参考文档。
- ShareLinkContent content = new ShareLinkContent.Builder()
- .setContentUrl(Uri.parse("https://developers.facebook.com"))
- .build();
注意:如果您的应用分享的是 iTunes 或 Google Play 商店的链接,我们不会发布您在分享中指定的任何图片或说明。相反,我们会发布通过网络爬虫直接从应用商店搜刮的一些应用信息,其中可能不包括图片。要预览转至 iTunes 或 Google Play 的链接分享,请在分享调试器中输入您的网址。
照片
用户可以使用分享对话框或自定义界面,通过您的应用将照片分享到 Facebook。
- 照片大小必须小于 12MB
- 用户需要安装版本 7.0 或以上的原生 Android 版 Facebook 应用
按 SharePhotoContent
模型构建照片的分享内容。如需了解完整的属性列表,请参阅SharePhotoContent
参考文档。
- Bitmap image = ...
- SharePhoto photo = new SharePhoto.Builder()
- .setBitmap(image)
- .build();
- SharePhotoContent content = new SharePhotoContent.Builder()
- .addPhoto(photo)
- .build();
视频
应用用户可通过分享对话框或您专属的自定义界面将视频分享到 Facebook。
视频大小必须小于 12MB。
按 ShareVideoContent
模型构建视频的分享内容。如需了解完整的属性列表,请参阅ShareVideoContent
参考文档。
- Uri videoFileUri = ...
- ShareVideo = new ShareVideo.Builder()
- .setLocalUrl(videoUrl)
- .build();
- ShareVideoContent content = new ShareVideoContent.Builder()
- .setVideo(video)
- .build();
多媒体
借助分享对话框,用户可以从您的应用向 Facebook 分享同时包含照片和视频的内容。请注意以下事项:
- 用户需要安装版本 71 或以上的原生 Android 版 Facebook 应用。
- 照片大小必须小于 12MB。
- 视频大小必须小于 12MB。
- 用户每次可以分享最多包含 6 个照片和视频元素的内容。
使用 ShareMediaContent
模型构建多媒体分享内容。如需了解完整的属性列表,请参阅ShareMediaContent
参考文档。
- SharePhoto sharePhoto1 = new SharePhoto.Builder()
- .setBitmap(...)
- .build();
- SharePhoto sharePhoto2 = new SharePhoto.Builder()
- .setBitmap(...)
- .build();
- ShareVideo shareVideo1 = new ShareVideo.Builder()
- .setLocalUrl(...)
- .build();
- ShareVideo shareVideo2 = new ShareVideo.Builder()
- .setLocalUrl(...)
- .build();
- ShareContent shareContent = new ShareMediaContent.Builder()
- .addMedium(sharePhoto1)
- .addMedium(sharePhoto2)
- .addMedium(shareVideo1)
- .addMedium(shareVideo2)
- .build();
- ShareDialog shareDialog = new ShareDialog(...);
- shareDialog.show(shareContent, Mode.AUTOMATIC);
添加分享界面
构建模型处理内容后,您可以触发 Facebook 分享界面或构建调用图谱 API 的专属界面。
按钮
Facebook 为 Android 提供用于触发分享的原生按钮。
“赞”按钮
“赞”按钮是用户与好友分享内容的快捷途径。轻触“赞”按钮即可为应用中的内容点“赞”,并将内容分享到 Facebook。要添加“赞”按钮,请将下列代码片段添加到您的视图:
- LikeView likeView = (LikeView) findViewById(R.id.like_view);
- likeView.setObjectIdAndType(
- "https://www.facebook.com/FacebookDevelopers",
- LikeView.ObjectType.PAGE);
“分享”按钮
“分享”按钮将调用分享对话框。要添加“分享”按钮,请将下列代码片段添加到您的视图:
- ShareButton shareButton = (ShareButton)findViewById(R.id.fb_share_button);
- shareButton.setShareContent(content);
“发送”按钮
用户可以使用“发送”按钮,以私密方式向好友和使用 Facebook Messenger 的联系人发送照片、视频和链接。“发送”按钮将调用消息对话框。要向视图添加“发送”按钮,请将下列代码片段添加到视图:
- SendButton sendButton = (SendButton)findViewById(R.id.fb_send_button);
- sendButton.setShareContent(shareContent);
- sendButton.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
分享对话框
分享对话框会切换到原生 Android 版 Facebook 应用,并在发布帖子后将控制权交还您的应用。如果未安装 Facebook 应用,会自动回退到网页对话框。
- ShareDialog.show(activityOrFragment, content);
例如,要为活动中的链接显示 ShareDialog
,请使用 onCreate
方法创建 ShareDialog
实例:
- public class MainActivity extends FragmentActivity {
- CallbackManager callbackManager;
- ShareDialog shareDialog;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- FacebookSdk.sdkInitialize(getApplicationContext());
- callbackManager = CallbackManager.Factory.create();
- shareDialog = new ShareDialog(this);
- // this part is optional
- shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
- }
然后显示 ShareDialog:
- if (ShareDialog.canShow(ShareLinkContent.class)) {
- ShareLinkContent linkContent = new ShareLinkContent.Builder()
- .setContentTitle("Hello Facebook")
- .setContentDescription(
- "The 'Hello Facebook' sample showcases simple Facebook integration")
- .setContentUrl(Uri.parse("http://developers.facebook.com/android"))
- .build();
- shareDialog.show(linkContent);
- }
最后在 onActivityResult
中调用 SDK 的 callbackManager
,处理响应:
- @Override
- protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- callbackManager.onActivityResult(requestCode, resultCode, data);
- }
消息对话框
消息对话框会切换到原生 Android 版 Messenger 应用,并在发布帖子后将控制权交还您的应用。
- MessageDialog.show(activityOrFragment, content);
其他功能
Facebook 分享对话框可为您提供一些 API 分享方式所不具有的选项。
话题标签
您可以指定一个话题标签,让它随分享的照片、链接或视频一同显示。这个话题标签还会显示在分享对话框中,因此用户在发布之前可决定是否将它删除。
以下是为链接分享添加话题标签的示例。
- ShareLinkContent content = new ShareLinkContent.Builder()
- .setContentUrl(Uri.parse("https://developers.facebook.com"))
- .setShareHashtag(new ShareHashtag.Builder()
- .setHashtag("#ConnectTheWorld")
- .build());
- .build();
引文分享
您还可以让用户选择高亮一段文本,作为与分享的链接一同显示的引文。或者,您也可以预先定义与分享的链接一同显示的引文,例如文章中的醒目引文。不管使用哪种方式,引文都将在用户评论区之外的专用位置显示。
- ShareLinkContent content = new ShareLinkContent.Builder()
- .setContentUrl(Uri.parse("https://developers.facebook.com"))
- .setQuote("Connect on a global scale.")
- .build();
进阶主题
内置分享回退
在旧版本的 Android 版 SDK 中,您的应用必须先检查设备是否安装了原生 Facebook 应用,然后才可打开分享对话框。若未安装 Facebook 应用,则您必须自行提供代码,才能调用回退对话框。
现在,SDK 将自动检查设备上是否安装了原生 Facebook 应用。如果未安装,SDK 会将用户切换到默认浏览器并打开动态发布对话框。如果用户想要分享开放图谱动态,SDK 会打开网页分享对话框。
应用链接
借助应用链接,用户可以从应用发布的 Facebook 帖子链接回您的应用。当用户点击从应用发布的 Facebook 帖子时,会打开您的应用,甚至可以链接到应用内的特定内容。
自定义界面
如果想要使用专属分享界面,您需要:
- 构建发布到图谱 API 端点
/me/feed
的自定义界面 - 在您的应用中实施 Facebook 登录
- 在用户登录您的应用时请求
publish_actions
权限
以下是通过专属界面将链接发布到 Facebook 时使用的代码:
- ShareApi.share(content, null);
分享开放图谱动态
借助开放图谱动态,用户可通过强类型 API 分享内容丰富的结构化内容,该 API 由开放图谱操作和对象定义。这些帖子会链接回您的应用或应用的 App Store 页面。
如需详细了解如何配置开放图谱动态,请参阅 Android 平台中的开放图谱动态。
按 ShareOpenGraphContent
模型构建开放图谱操作的分享内容。如需了解完整的属性列表,请参阅ShareOpenGraphContent
参考文档。
- ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
- .putString("og:type", "fitness.course")
- .putString("og:title", "Sample Course")
- .putString("og:description", "This is a sample course.")
- .putInt("fitness:duration:value", 100)
- .putString("fitness:duration:units", "s")
- .putInt("fitness:distance:value", 12)
- .putString("fitness:distance:units", "km")
- .putInt("fitness:speed:value", 5)
- .putString("fitness:speed:units", "m/s")
- .build();
- ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
- .setActionType("fitness.runs")
- .putObject("fitness:course", object)
- .build();
- ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
- .setPreviewPropertyName("fitness:course")
- .setAction(action)
- .build();
facebook 分享的更多相关文章
- 网页上facebook分享功能的具体实现
1,一个链接: 参数是要分享的页面的链接 代码如下: <a style="width:35px; height:40px; position:relative; top:10px; l ...
- Android Facebook分享功能实现
1.下载 Facebook SDK https://developers.facebook.com/docs/Android?locale=zh_CN 2.在facebook下设置app的相关信息 3 ...
- Android集成友盟facebook分享
在项目中需要将图片和视频分享到社交平台,所以集成了友盟分享.在集成facebook分享的时候走了不少弯路,现在将过程记录下来. 1.先将友盟facebook的jar包复制到项目的libs文件夹下. 2 ...
- 接入Twitter和Facebook分享踩坑记录
准备工作 1.首先需要在HTML的head添加下述meta标签内容,在分享时,Twitter和Facebook会爬取该网站页面的meta内容,然后生成分享卡片. 2.按照下述配置完成后,需要把内容发布 ...
- 使用ShareSDK完成Facebook第三方登录和Facebook分享时没办法跳转到Facebook应用
楼主是通过cocoapod接入ShareSDK, 后来发现无论是使用fb分享还是登录, 都是跳出了网页认证(即使我的手机有安装了fb) 后来mob的技术客服小哥告诉我在构造分享参数的时候, 执行参数字 ...
- facebook分享
http://bbs.mob.com/forum.php?mod=viewthread&tid=19104&page=1&extra=#pid40942 应用审核 http: ...
- 烦人的Facebook分享授权
开发端授权app权限 facebook要求提交应用到他们平台, 并且还限制100mb, 坑爹死了, 果断使用google drive分享给他们, 最開始不确定分享给他们什么样的程序包, 结果审核没通过 ...
- Android 开发 facebook分享,登陆,获取信息
1 搭建开发环境 1.1 在Facebook官网SDK中,下载4.0.0的SDK包. 1.2 使用Eclipse导入SDK包中的Facebook工程,并添加android-supp ...
- facebook分享遇到的错误解决方法
*** Terminating app due to uncaught exception 'InvalidOperationException', reason: ''App ID not foun ...
随机推荐
- [BZOJ1391]解题报告|网络流的又一类建图&Dinic的若干优化
1391: [Ceoi2008]order 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成. 现在给出这些参数, ...
- 【BZOJ】1770 [Usaco2009 Nov]lights 燈
[算法]高斯消元-异或方程组 [题解]良心简中题意 首先开关顺序没有意义. 然后就是每个点选或不选使得最后得到全部灯开启. 也就是我们需要一种确定的方案,这种方案使每盏灯都是开启的. 异或中1可以完美 ...
- [转]华 使用npm安装一些包失败了的看过来(npm国内镜像介绍)
发布于 5 年前 作者 wppept 275957 次浏览 最后一次编辑是 1 年前 这个也是网上搜的,亲自试过,非常好用! 镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置 ...
- 关于might_sleep的一点说明---CONFIG_DEBUG_ATOMIC_SLEEP【转】
转自:http://blog.chinaunix.net/uid-23769728-id-3157536.html 这个函数我在看代码时基本上是直接忽略的(因为我知道它实际上不干什么事),不过因为内核 ...
- Ubuntu10.04中利用V4L2读取摄像头数据并保存成文件【转】
转自:http://blog.chinaunix.net/uid-29339876-id-4042245.html 利用V4L2读取UVC摄像头数据并保存成视频文件,主要参考http://linuxt ...
- 如何在本机搭建SVN服务器【转】
转自:http://www.cnblogs.com/loveclumsybaby/archive/2012/08/21/2649353.html 目的:在没有正式的SVN服务器的情况下,完成代码的本地 ...
- [NOIP 2010] 引水入城
搜索+贪心. 参考博客:http://blog.sina.com.cn/s/blog_8442ec3b0100xib1.html 主要是要看出来,如果有解的话,每个沿湖城市能够流到的范围是连续的区间. ...
- ios iphone ipad上iframe的宽度会扩大的解决办法
这个问题,我从网上查了下,好像是属于ios的bug,android,windows都没有问题. 解决办法,就是在iframe加载完成后,设置 iframe里面body的宽度为多少PX. $(" ...
- 搜索引擎--范例:SAE创建新应用,SVN管理代码
最初接触的平台是新浪SAE平台,虽然限制多得要命,速度也不怎么样,但无论怎么样,人家是“免费的”,免费的东西你还想怎么样?是不是? 1:注册登录新浪SAE,这个不用多说,相信你们的智商 2:创建一个新 ...
- sqlserver中case when then用法
sql语句判断方法之一,Case具有两种格式,简单Case函数和Case搜索函数. --简单Case函数 (CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' E ...