Android Facebook SDK v4 LikeView问题

8
我正在尝试在我的Android应用程序中实现Facebook的“点赞按钮”。以前,我使用的是Facebook SDK v3,在其中设置了LikeView,并在onActivityResult()中调用likeView.handleOnActivityResult(context, requestCode, resultCode, data)。这将更改按钮,以便在页面“点赞”后,它将显示“已赞”和喜欢该页面的人数。
现在,我正在使用Facebook SDK v4,因为v3已经被弃用。在这个版本中,我没有看到任何文档或任何方式来获得与“点赞”按钮相同类型的功能。它不再具有v3中的likeView.handlePnActivityResult方法。现在,当用户点击“点赞”按钮并喜欢该页面时,它不会更改按钮的状态。
有谁知道如何解决此问题,使其具有与Facebook SDK v3中的LikeView相同的功能?
以下是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Initialize FaceBook SDK
    FacebookSdk.sdkInitialize(this);

    setContentView(R.layout.activity_about);

    // Set up ActionBar
    actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);

    terms = (LinearLayout) findViewById(R.id.terms_holder);
    privacyPolicy = (LinearLayout) findViewById(R.id.privacy_policy_holder);
    share = (LinearLayout) findViewById(R.id.social_media_holder);
    environmentButton = (Button) findViewById(R.id.environment_change);
    likeView = (LikeView) findViewById(R.id.like_view);

    likeView.setObjectIdAndType("##############", LikeView.ObjectType.PAGE);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // In the old Facebook SDK this is where it would change the like button to "liked 2,038" but this code is deprecated now apparently
    // likeView.handleOnActivityResult(this, requestCode, resultCode, data);
}

以下是我的XML代码:

<LinearLayout
android:id="@+id/social_media_holder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:gravity="center_vertical"
android:clickable="true"
android:onClick="onClick" >


<com.facebook.share.widget.LikeView
    android:id="@+id/like_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingTop="10dp" />           


<TextView
    android:id="@+id/post_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="5dp"
    android:text="@string/post_about_us"
    android:textSize="20dp"
    android:textColor="@color/dark_grey" />


4
你需要实现一个 CallbackManager,并且在 onActivityResult 方法中通过 callbackManager.onActivityResult(requestCode, resultCode, data) 将结果传递给它。 - Cruceo
2个回答

6
Guardanis的回答是正确的(问题评论区)。但这是我使用的代码。
在onCreate(...)中:
callbackManager = CallbackManager.Factory.create();

在onActivityResult(...)中

 callbackManager.onActivityResult(requestCode, resultCode, data);

这对我不起作用。我正在使用Parse API进行Facebook登录,并且我还在onActivityResult()方法中添加了ParseFacebookUtils.onActivityResult(requestCode,resultCode,data); - Gopal
我已解决了这个问题,我忘记在Facebook应用程序中添加测试人员/开发人员。 - Gopal
成功了!谢谢!这个在 Facebook 的文档里面怎么没有提到?! - Mateusz Kaflowski

0

原生点赞按钮:专为移动应用设计的原生点赞按钮将不再受到Facebook SDK 4.28及以上版本的支持。SDK的早期版本仍可使用原生点赞按钮,但从2/6开始,原生点赞按钮将不再受到支持。在2/6之后,原生点赞对话框将不再出现,点击任何原生点赞按钮都将没有任何作用。


1
好的,但是你没有提供任何解决方案! - MeLean
因为现在没有本地解决方案。 - wyzard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接