美文网首页
FaceBook 根据官方文档 分享 二

FaceBook 根据官方文档 分享 二

作者: 乘风破浪的程序员 | 来源:发表于2016-07-14 19:20 被阅读929次
    了解完上一篇入门文档后接下来建模

    首先
    您还需要在 ContentProvider 中设置 AndroidManifest.xml,其中 {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,请在 ShareDialog方法中创建 onCreate实例:

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

    最后在 callbackManager 中调用 SDK 的 onActivityResult,处理响应:

    @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 根据官方文档 分享 二

          本文链接:https://www.haomeiwen.com/subject/geaejttx.html