facebook 分享


在 Android 平台分享

本指南詳細介紹如何通過 Android 應用將內容分享到 Facebook。用戶通過您的應用分享時,相關內容會在其時間線上顯示,並且可能在其好友的動態消息中顯示。

用戶還可通過您的應用將內容分享到 Facebook Messenger。

前提條件

您將需要執行以下操作,才能通過應用將內容分享到 Facebook:

如需詳細了解這些要求,請參閱 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 帖子時,會打開您的應用,甚至可以鏈接到應用內的特定內容。

自定義界面

如果想要使用專屬分享界面,您需要:

以下是通過專屬界面將鏈接發布到 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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM