Facebook喜欢不单独计算每个“故事”

时间:2017-09-26 14:20:37

标签: facebook laravel laravel-5.4

  

描述:

Ι有一个laravel项目,用户可以通过表单提交故事。每个故事都有一个标题和一个主题。在获得管理面板批准后,可以在“存档”页面(也是索引页面)上查看故事,该页面显示所有已批准的故事。每个故事都有一个像facebook一样的按钮,所以我们可以计算每个故事有多少喜欢。我使用下面的代码来检查特定网址的返回内容:

http://graph.facebook.com/?fields=og_object%7Blikes.summary(true).limit(0)%7D,share&id=MY_URL_HERE

  • MY_URL_HERE的结构类似于domain.com/story/1,其中“1”是特定故事的ID。

使用url:domain.com/story/1,可以返回如下信息:

{
   "og_object": {
      "likes": {
         "data": [

         ],
         "summary": {
            "total_count": 1,
            "can_like": false,
            "has_liked": false
         }
      },
      "id": "1702103726528488"
   },
   "share": {
      "comment_count": 0,
      "share_count": 1
   },
   "id": "http.domain.com/story/1"
}

我们可以看到喜欢,分享等的数量。另外,对于ID为“1”的故事,它有一个id “id”:“1702103726528488”

  

我认为这是问题所在:

无论我在网址中放入什么故事ID,它总是会返回ID 1702103726528488,我想这意味着facebook不会识别它是一个不同的网址 - 所以应该使用不同的ID。

  

有趣的是:

如果我改变了我的路线名称:

domain.com/story/{id}domain.com/{id}它有效。使用该URL,上面提供的图表facebook url返回的对象中的每个ID都不同。

有什么想法吗?

  

休息信息:

每个故事的facebook like按钮:

<div class="content-single-more">
    <a href="{{ url('story/'. $story->user_id) }}">READ THE STORY</a> // it redirects to domain.com/story/id
</div>

路由:

Route::get('/', [
  'as' => 'index',
  'uses' => 'StoriesController@getStories'
]);

    Route::get('/index/{paginate}', [
    'as' => 'index',
    'uses' => 'StoriesController@paginateIndex'
]);

Route::get('story/{id}', [
    'as' => 'story',
    'uses' => 'StoriesController@getSingleStory',
]);
  

StoriesController

 public function getStories(){
    // css class to return
    $body_class = "homepage";

    $stories = DB::table('users_stories')->select('user_id', 'story_title', 'story')->where('state', '=', 'approved')->paginate(6);

    // fgn first value
    $fgn = 6;

    return view('index', compact('stories', 'body_class', 'fgn'));
  }

  public function paginateIndex($paginate){
    // css class to return
    $body_class = "homepage";

    $fgn = $paginate * 1;

    $stories = DB::table('users_stories')->select('user_id', 'story_title', 'story')->where('state', '=', 'approved')->paginate($fgn);
    return view('index', compact('stories', 'body_class', 'fgn'));
  }

  public function getSingleStory($id){

    $single_stories = UserStoriesModel::where('state', '=', 'approved')->where('user_id', '=', $id)->get(['user_id', 'story_title', 'story']);
    // dd($single_stories);
    // css class to return
    $body_class = "single-post";

    // get the current user
    $user = UserStoriesModel::find($id);

    if(!$user){
      return redirect()->route('index');
    }

    // get previous user id
    $previous_story = UserStoriesModel::where('user_id', '<', $user->user_id)->where('state', '=', 'approved')->max('user_id');

    // get next user id
    $next_story = UserStoriesModel::where('user_id', '>', $user->user_id)->where('state', '=', 'approved')->min('user_id');
    //dd($previous_story);

    return view('story', compact('single_stories', 'body_class', 'next_story', 'previous_story'));
  }

1 个答案:

答案 0 :(得分:1)

您需要确保Facebook从您正在分享的实际网址中提取内容。

如果您设置了规范网址,Facebook会将其作为此内容的“真实”网址。因此,要么删除它,要么指定您希望Facebook通过og:url元标记明确考虑“真实”的URL。