簡體   English   中英

通過開放圖形API獲取FB頁面的對話

[英]get conversations of FB page via open graph api

我已經注冊了一個Facebook-App並創建了一個具有我需要的所有權限的令牌。 其中

  • manage_pages
  • read_mailbox
  • read_page_mailbox

現在我想使用Facebook開放圖形API從我自己的FB頁面讀取一些數據。 我想閱讀頁面收到的私人消息以及我代表我的頁面上的一些粉絲發送的消息。

我知道我可以通過發送這樣的http請求來獲取所有信息:

https://graph.facebook.com/{page-id}/{object}?access_token={token}

其中{something}是實際值的占位符。 為了給出一個工作示例,我可以通過發送此請求來閱讀我頁面上顯示的帖子:

https://graph.facebook.com/141928949155955/posts?access_token={my secret token}

正如我所說,這項工作正常,因為兩年多了。 (我只需要不時更新令牌)


但現在我想閱讀頁面和它的粉絲之間的私人談話。 我想提取所有會話並將其插入電子表格中。 我想做一次,也許再過一兩年。 我可以通過復制和粘貼為每個對話從瀏覽器窗口手動提取它們,但由於會話太多,我認為花費更少的時間讓程序為我完成。

如果我理解Facebook文檔是正確的,那么我必須使用的關鍵字必須是conversations 但我明白了:

https://graph.facebook.com/141928949155955/conversations?access_token={secret token}  

{
   "error": {
      "message": "(#210) Subject must be a page.",
      "type": "OAuthException",
      "code": 210
   }
}

但是141928949155955 一個頁面。 我不知道我做錯了什么。 我必須發送哪些正確的請求來接收頁面私人談話?


編輯(6月16日):

我可以通過這個請求閱讀我的個人對話:

https://graph.facebook.com/me/conversations?access_token={secret token}  

但我不想閱讀我作為一個人所做的對話。 我需要我的一個頁面。

我找到了解決問題的方法。 (謝謝kush,你的回答很有幫助,但我想補充一些信息)

我的問題是我誤解了錯誤消息“主題必須是一個頁面”。 我認為“主題”是指查詢字符串中的一部分。 但它指的是令牌! 像“令牌必須是頁面訪問令牌”這樣的消息可以讓我在兩年多的時間里找到不必要的搜索周! 當你無法定義“主題”是什么時,你如何使用像“主題”這樣的術語?

所以這不是查詢字符串錯誤。 這是令牌的類型!

現在這里是解決問題的完整過程(獲取頁面訪問令牌)


第1步

獲取應用程序的用戶訪問令牌,稍后您可以使用該令牌獲取頁面訪問令牌

  • 1.1轉到Graph API Explorer https://developers.facebook.com/tools/explorer/
  • 1.2從“應用程序:”下拉菜單中選擇您的應用程序。
  • 1.3單擊“獲取訪問令牌”。
  • 1.4從“擴展權限”選項卡中選擇“manage_pages”。
    • 另外,選擇頁面訪問令牌所需的所有權限。 (雖然現在你不創建頁面訪問令牌,只是一個用戶訪問令牌)
  • 1.5單擊“獲取訪問令牌”。
  • 1.6單擊“確定”以授予權限。

在“訪問令牌:”字段中,您現在找到一個用戶訪問令牌的令牌。 它不是頁面訪問令牌! 此令牌具有管理頁面所需的所有權限(包括權限“manage_pages”),但您不能使用它來管理頁面,因為它是錯誤類型的令牌。 您只需要出於以下原因需要此令牌:創建新令牌。

第2步

使用您剛剛創建的用戶訪問令牌來創建頁面訪問令牌

  • 2.1在查詢字段中輸入“me / accounts”
  • 2.2點擊“提交”

您將獲得一個頁面列表,每個頁面都有一個“access_token”(現在是一個頁面訪問令牌)。 每個令牌都會繼承您在調用“我/帳戶”時使用的用戶訪問令牌的權限。

此頁面訪問令牌在一小時后過期。


補充

如果您想要永不過期的頁面訪問令牌,請執行以下操作:

  • A.1轉到https://developers.facebook.com
  • A.2從下拉菜單“應用程序”中選擇您要使用的應用程序。
  • A.3單擊“App Secret”字段中的“show”(您需要輸入您的Facebook密碼)
  • A.4在瀏覽器中打開一個新選項卡,執行上面的步驟1.1到1.6,生成一個短暫的用戶訪問令牌
  • A.5在瀏覽器中打開第三個選項卡,然后在瀏覽器的地址字段中輸入此字符串:
    • https://graph.facebook.com/v2.0/oauth/access_token?grant_type=fb_exchange_token&client_id={app-id}&client_secret={app-secret}&fb_exchange_token={short-lived-token} (不要按回車!)如果從一個瀏覽器選項卡切換到另一個瀏覽器選項卡時此字符串消失,請使用任何文本編輯器組合字符串並稍后將其復制到地址字段中。
  • A.6在此字符串中,使用仍顯示您的Apps數據的瀏覽器標簽中的值替換{app-id}{app-secret}
  • A.7將{short-lived-token}替換為您在Graph API Explorer中的“訪問令牌:”字段中找到的用戶訪問令牌。
    • (在此步驟之后,地址字符串中不再有大括號)
  • A.8發送此請求(現在按Enter鍵)

您的瀏覽器窗口現在顯示一個字符串,其中包含“access_token”和“expires”字段,由&符號(“&”)分隔,該符號不是令牌的一部分。 此令牌是一個長期存在的用戶訪問令牌,將在兩個月后到期。

  • A.9使用步驟A.8中的“access_token”執行步驟2.1和2.2

結果是具有您在步驟1.4中選擇的所有權限的頁面訪問權限,永不過期。

祝好運!

使用頁面訪問令牌應該有幫助,因為您正在從頁面閱讀..

圖api節點:獲取我/帳戶

我/帳戶會為您提供您管理的頁面,並使用頁面信息詞典中的訪問令牌。

你應該從我/賬戶獲得以下數據

{
  "data": [
    {
      "category": "Product/service",
      "name": "Sample Page",
      "access_token": "{page-access-token}",
      "id": "1234567890",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    }, 
}

使用page-access-token作為頁面管理員從頁面訪問數據,你將收到數據:)讓我知道這是否有效:)

成功的授權將向您的應用返回訪問令牌,然后您可以使用該令牌對Facebook API執行操作。 顯示的錯誤消息表示您沒有有效的訪問令牌,這意味着您可能沒有正確驗證應用程序。 我會在onFacebookError和onError方法上進行一些日志記錄,以查看問題所在。

在登錄時請求權限因此其身份驗證錯誤

許可清單

https://developers.facebook.com/docs/facebook-login/access-tokens/

設置權限參考

https://developers.facebook.com/docs/android/login-with-facebook#permissions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM