2017-09-26 28 views
0

說明:Facebook的喜歡不計數每一個「故事」單獨

Ι有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。

使用的網址: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」

什麼,我認爲這就是問題所在:

無論我在URL中放入什麼Story ID,它總會返回ID 1702103726528488,我想這意味着Facebook無法識別它是不同的url--所以應該使用不同的ID。

有趣的是:

如果我改變路線名稱由:

domain.com/story/{id}domain.com/{id}它的工作原理。使用該URL每個ID在由上面提供的圖表facebook url返回的對象中是不同的。

任何想法?

休息信息:

像按鈕每個故事Facebook的:

<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' => '[email protected]ies' 
]); 

    Route::get('/index/{paginate}', [ 
    'as' => 'index', 
    'uses' => '[email protected]' 
]); 

Route::get('story/{id}', [ 
    'as' => 'story', 
    'uses' => '[email protected]', 
]); 

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

您是否通過Open Graph meta標籤指定了正確的URL?沒有重定向或規範網址干擾? Facebook調試工具說什麼? – CBroe

+0

@CBroe規範URL是否與獲取的URL相同?現在,Canonical URL始終是domain.com(索引),而不是特定的故事 –

+0

當然,否則Facebook將從該URL獲取元數據。 (如果你想離開規範,那麼指定og:url。) – CBroe

回答

1

您需要確保Facebook從您分享的實際URL中提取內容。

如果您設置了規範網址,則Facebook會將其作爲此內容的「真實」網址。因此,要麼刪除它,要麼指定您希望Facebook通過og:url元標記明確考慮「真實」的網址。