Android:Facebook就像按钮不起作用

时间:2015-05-29 11:23:47

标签: android facebook-graph-api facebook-like

我正在尝试将facebook“like”按钮整合到我的Android应用中。我正在使用Facebook SDK 4.1.2。

我的应用程序使用片段具有导航抽屉的主要活动。其中一个片段有ListView。我需要在每个列表项中使用facebook“like”按钮。我正在使用自定义BaseAdapter来构建列表项。 我没有登录facebook的问题以及从某些Facebook页面获取帖子的问题。

但我遇到了下一个问题:

  1. “赞”按钮没有任何喜欢计数,它只是看起来像这样
  2. 1 http://contest.norejayevents.com/like.gif

    顺便说一下,是否可以使这个按钮看起来像这样?

    2 http://www.jonathandoctor.net/images/facebook_like_button_big-small.jpg

    1. 我的“喜欢”行动没有任何效果。我按下“喜欢”按钮,出现一些屏幕并快速关闭,然后我看不到按钮的任何变化,Facebook对象(某些页面帖子)没有得到我的喜欢(我通过浏览器检查) 。换句话说,我喜欢的按钮不会记录我是否按下我喜欢的按钮。而且同样的行动也没有成功。
    2. 这项任务我缺少什么?

      以下是我的代码部分:

      MainActivity.java

      private CallbackManager callbackManager;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      
          FacebookSdk.sdkInitialize(getApplicationContext());
      
          callbackManager = CallbackManager.Factory.create();
      
          OpenFacebookSession();
      
          mNavigationDrawerFragment = (NavigationDrawerFragment)
                  getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
          mTitle = getTitle();
      
          // Set up the drawer.
          mNavigationDrawerFragment.setUp(
                  R.id.navigation_drawer,
                  (DrawerLayout) findViewById(R.id.drawer_layout));
      
      }
      
      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          callbackManager.onActivityResult(requestCode, resultCode, data);
      }
      

      ListAdapter.java

      public class ListAdapter extends BaseAdapter {  
      
          @Override
          public View getView(int position, View convertView, ViewGroup parent) {
              if (inflater == null)
                  inflater = (LayoutInflater) activity
                          .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              if (convertView == null)
                  convertView = inflater.inflate(R.layout.feed_item, null);
      
              LikeView likeView = (LikeView) convertView.findViewById(R.id.like_view);
              likeView.setLikeViewStyle(LikeView.Style.BOX_COUNT);
              likeView.setAuxiliaryViewPosition(LikeView.
                  AuxiliaryViewPosition.INLINE);
      
              likeView.setObjectIdAndType(someID,//some Facebook object ID
                                          activity-launchmode/en",
                                          LikeView.ObjectType.OPEN_GRAPH);
              return convertView;
      
          }
      
      
      }
      

      feed_item.xml

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="@color/feed_bg"
          android:orientation="vertical" >
      
      <RelativeLayout
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_marginLeft="@dimen/feed_item_margin"
          android:layout_marginRight="@dimen/feed_item_margin"
          android:layout_marginTop="@dimen/feed_item_margin"
          android:background="@drawable/bg_parent_rounded_corner"
          android:orientation="vertical"
          android:paddingBottom="@dimen/feed_item_padding_top_bottom"
          android:paddingTop="@dimen/feed_item_padding_top_bottom" >
      
          <com.facebook.share.widget.LikeView
              android:id="@+id/like_view"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@+id/feedImage1"
              android:layout_alignParentLeft="true"
              android:layout_alignParentStart="true" />
      
          </RelativeLayout>
      
      </LinearLayout>
      

2 个答案:

答案 0 :(得分:0)

使用“赞”按钮需要应用程序批准,因此在开发过程中,只有您应用中具有 Admin / Developer / Tester 角色的用户才能访问它。一旦获得批准,任何用户都可以使用该功能。

答案 1 :(得分:0)

完成这项工作的完美解决方案如下。

我们在考虑您已经生成了facebook应用并且输入了Hash_key ,并且您还将您的帐户添加为测试人员,如果没有。

将其添加到xml视图中。

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

然后将此添加到您的OnCreate方法

    FacebookSdk.sdkInitialize(MainActivity.this);
    callbackManager = CallbackManager.Factory.create();
     LikeView likeView = (LikeView) findViewById(R.id.likeView);
    likeView.setLikeViewStyle(LikeView.Style.BUTTON);
    likeView.setAuxiliaryViewPosition(LikeView.AuxiliaryViewPosition.INLINE);
    likeView.setObjectIdAndType("https://www.facebook.com/Rultech",LikeView.ObjectType.OPEN_GRAPH);

注意:LikeView.Style.BUTTON可根据您的需要进行更改。

然后将以下代码添加到Manifest。

    <meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/fb_app_id" />
    <provider android:authorities="com.facebook.app.FacebookContentProvider_fb_app_id"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true"/>

然后onActivityResult添加此

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

如果手机上未安装Facebook应用程序,可能会出现故障。

最后运行应用。这将确保我们已经针对 FACEBOOK SDK 4.0.1 对上述版本进行了测试。