如何使用 Facebook SDK 4.0 分享或添加地点或签到?

How can I share or add a place or Check-in using Facebook SDK 4.0?

我一直在浏览 Facebook 文档,但仍未找到有关如何签到或共享地点的信息。大多数答案已被弃用,我需要使用更新的 Facebook SDK 来实施。我错过了文档中的某些内容吗?还是我必须使用第三方应用程序???除了使用 SDK 分享的主要方式外,我还知道如何使用 ACTION_SEND 在 facebook 上分享媒体内容,是否可以在那里插入一个 place 参数?

如果您使用的是 Facebook 分享按钮,它会像这样

ShareContent sharecontent = new ShareLinkContent.Builder()
            .setPlaceId("141887372509674")
            .build();

    btnfacebookshare.setShareContent(sharecontent);

在 ShareContents 上放置一个 placeID

还有一些 ShareContent 子类可以与 setPlaceId() 一起使用,例如 SharePhotoContent、ShareVideoContent 和 ShareOpenGraphContent。

文档中没有明确说明 (https://developers.facebook.com/docs/reference/android/current/class/ShareLinkContent/) 但通过实验我想出了它

需要使用 GraphRequest 请求 placeId,可以使用以下方法完成:

    String facebookUrl = "https://www.facebook.com/mybusiness";
    final String PAGE_ID_FROM_URL = facebookUrl.substring(facebookUrl.lastIndexOf("/") + 1, facebookUrl.length());//now PAGE_ID_FROM_URL = mybusiness 
  //request for page id      
  new GraphRequest(AccessToken.getCurrentAccessToken(), "/"+ PAGE_ID_FROM_URL , null, HttpMethod.GET,
          new GraphRequest.Callback() {
             public void onCompleted(GraphResponse response) {
                    JSONObject obj = response.getJSONObject();
                        if (obj.has("id")) {
                            try {
                               String pageID = obj.getString("id");
                               ShareDialog share = new ShareDialog(MyActivity.this);
                               ShareContent shareContent = new ShareLinkContent.Builder().setPlaceId(pageID).setPageId(pageID).build();
                               share.show(shareContent, ShareDialog.Mode.AUTOMATIC);

                         } catch (JSONException e) {
                               e.printStackTrace();
                           }                   
    }
     }).executeAsync();