Facebook Sayfalarını bağlayın

Facebook bağlantısı oluşturun, hesap sahibinin Sayfalarını konumlarınızla eşleştirip onaylayın veya elle seçin; müşteri ayrılınca hesap bağlantısını kesin.

Bağlı bir Facebook hesabı, bir konum için Facebook'ta içerik yayınlamayı ve raporlamayı etkinleştirir. Bir Sayfa bağlandıktan sonra gönderiler postSites içinde FACEBOOK hedefleyebilir, Facebook analiz uç noktası null yerine Sayfa metriklerini döndürür, Sayfa bir yorum kaynağı olarak eklenir ve böylece yorumları diğer yorumlarla birlikte gelir, ayrıca konumun premium işletme kayıtlarındaki Facebook satırı REQUIRING_ACTION durumundan çıkar.

Akış Google ile aynıdır: bir bağlantı oluşturun, hesap sahibinin izin vermesini sağlayın, eşleştirin ve onaylayın. Facebook için farklı olan değerler ilgili yerlerde belirtilmiştir.

Facebook Sayfasının çalışma saatleri Facebook'ta önceden ayarlanmış olmalıdır. Konumda businessHours bulunsa bile Facebook, çalışma saatleri olmayan bir Sayfaya ListingsAPI üzerinden yapılan güncellemeyi reddeder. Bu durumda Facebook işletme kaydı, eksik çalışma saatleriyle ilgili bir syncIssue ile IN_PROGRESS durumunda kalır. Bunu düzeltmek için Facebook'taki Sayfaya çalışma saatlerini ekleyin, ardından bir konum güncellemesi gönderin.

İstek gövdesi yalnızca iki yönlendirme URL'nizi içerir. Bağlantı, anahtarın sahibi olan hesapla sınırlıdır ve 24 saat geçerlidir.

Connect link
curl -X POST https://listingsapi.com/api/v4/connected-accounts/connect-facebook \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "successUrl": "https://app.example.com/connect/facebook/success",    "errorUrl": "https://app.example.com/connect/facebook/error"  }}'
JSON
{  "data": {    "bulkConnectLinkForFacebook": {      "success": true,      "url": "https://connect.example.com/oauth?token=8f3c1d92-...",      "errors": null    }  }}

Yukarıdaki url bir yer tutucudur. Hesap sahibini kendi yanıtınızda döndürülen url adresine yönlendirin.

Hesap sahibini url adresine yönlendirin. Hesap sahibi Facebook'un koşullarını kabul eder, Sayfa izinlerini verir ve sizin successUrl adresinize ulaşır.

2. OAuth dönüşünden sonra bağlı hesapları listeleyin

publisher=FacebookAccount ile filtreleyin. Bu, offset tabanlı bir sayfadır: records[] ve pageInfo.totalRecords içerir, page ve perPage ile sayfalanır.

List accounts
curl "https://listingsapi.com/api/v4/connected-accounts?publisher=FacebookAccount&page=1&perPage=20" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "connectedAccountsInfo": {      "pageInfo": { "hasNextPage": false, "totalRecords": 1 },      "records": [        {          "connectedAccountId": "d2397854-52c2-41d7-95f1-b90cba16498d",          "connectedAccountType": "FacebookAccount",          "status": "CONNECTED",          "requestMatchesStatus": "MATCH_COMPLETED",          "connectedLocationsCount": 0        }      ]    }  }}

connectedAccountId değerini saklayın. status, CONNECTED, MATCH_IN_PROGRESS veya CONNECTIVITY_ISSUE değerini alır; CONNECTED dışındaki herhangi bir değer, sonraki adımların çalışması için hesap sahibinin yeniden yetkilendirme yapması gerektiği anlamına gelir.

3. Eşleştirmeyi başlatın ve tamamlanmasını bekleyin

Eşleştirme işlemi, hesabın erişebildiği Sayfaları getirir ve her birini konumlarınızdan biriyle eşleştirir. İşlem arka planda çalışır; bu nedenle requestMatchesStatus değeri MATCH_COMPLETED olana kadar hesabın ayrıntılarını düzenli aralıklarla sorgulayın. Önerileri bu aşamadan önce okumak, "eşleşme yok" gibi görünen boş bir records dizisi döndürür.

Trigger and poll
curl -X POST https://listingsapi.com/api/v4/connected-accounts/trigger-matches \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "connectedAccountIds": ["d2397854-52c2-41d7-95f1-b90cba16498d"] } }' # then, every 15 seconds until requestMatchesStatus is MATCH_COMPLETEDcurl https://listingsapi.com/api/v4/connected-accounts/d2397854-52c2-41d7-95f1-b90cba16498d/details \-H "Authorization: API $LISTINGSAPI_KEY"

Ayrıntı kaydı data.connectedAccountDetails.details içinde döndürülür. MATCH_COMPLETED, eşleştiricinin işlemi tamamladığı anlamına gelir; siz onaylayana kadar hiçbir bağlantı kurulmaz, dolayısıyla connectedLocationsCount şimdilik 0 olarak kalır.

4. Önerileri inceleyin ve onaylayın

Her kayıt, konumunuzu (locationInfo, locationId) bir Sayfayla (suggestedLocationInfo) eşleştirir. Bir Facebook hesabı için accountType, GMB yerine FB değerindedir ve bu, onaylamak için gönderdiğiniz id değerini değiştirir.

Suggestions
curl "https://listingsapi.com/api/v4/connected-accounts/d2397854-52c2-41d7-95f1-b90cba16498d/connection-suggestions?page=1&perPage=20" \-H "Authorization: API $LISTINGSAPI_KEY"

Bir önerinin id değeri yoktur. Türü accountType içinden seçerek <MatchRecordType>:<matchedDataDatabaseId> değerini base64 ile kodlayıp bu değeri oluşturun. Referans yalnızca kodu çözüldüğünde GmbLocationMatchedData:... sonucunu veren bir Google örneği gösterir; tür, yayın platformuna göre değişir. Facebook için tür FbLocationMatchedData olduğundan, 0d5e306f-0da0-46e3-929f-fd3c67ccd8cc ile birlikte FB, RmJMb2NhdGlvbk1hdGNoZWREYXRhOjBkNWUzMDZmLTBkYTAtNDZlMy05MjlmLWZkM2M2N2NjZDhjYw== olarak kodlanır.

accountTypeEşleşme kaydı türü
GMBGmbLocationMatchedData
FBFbLocationMatchedData
APPLEAppleLocationMatchedData
Confirm matches
# base64 of FbLocationMatchedData:0d5e306f-0da0-46e3-929f-fd3c67ccd8cccurl -X POST https://listingsapi.com/api/v4/connected-accounts/confirm-matches \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "matchRecordIds": ["RmJMb2NhdGlvbk1hdGNoZWREYXRhOjBkNWUzMDZmLTBkYTAtNDZlMy05MjlmLWZkM2M2N2NjZDhjYw=="] } }'

Yanıt, success ve onaylanamayan, kodu çözülmüş veritabanı id değerleri olan failedIds ile birlikte data.confirmConnectMatches döndürür. Yanlış türle oluşturulmuş bir id, success: false içeren ve failedIds içermeyen 200 döndürür; bu nedenle her zaman success değerini kontrol edin.

Eşleştirici emin olmadığında veya bir Sayfa eşleştirme çalıştırıldıktan sonra oluşturulduğunda, hesabın görebildiği Sayfaları listeleyin ve birini doğrudan bağlayın. connectedAccountId, işletme kayıtları çağrısının JSON gövdesine eklenir; sorgu parametresi olarak gönderildiğinde yok sayılır ve ilk bağlı hesabın işletme kayıtlarını alırsınız.

Pick and link
curl -X POST https://listingsapi.com/api/v4/connected-accounts/connected-account-listings \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "connectedAccountId": "d2397854-52c2-41d7-95f1-b90cba16498d", "locationInfo": "Lincoln" }' curl -X POST https://listingsapi.com/api/v4/connected-accounts/connect-listing \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "connectedAccountId": "d2397854-52c2-41d7-95f1-b90cba16498d",    "connectedAccountListingId": "<id from the listings response>"  }}'

Her işletme kaydı id, locationName, address ve liveLink içerir. Kaydın id değeri, connect-listing işleminin aldığı connectedAccountListingId değeridir; alanın adı listingId değildir. Başarısız bir bağlantı kurma işlemi, Listing record not found gibi bir message ile birlikte success: false döndürür.

6. Bir müşteri ayrıldığında hesabın bağlantısını kesin

Bağlantıyı kesme işlemi ya tümünü kapsar ya da hiçbirini: hesap üzerinden bağlanan tüm Sayfaların senkronizasyonu durur ve Facebook etkileşimleri artık gelmez. Hesabı koruyarak tek bir konumun bağlantısını kesmek için disconnect-listing kullanın.

Disconnect
curl -X POST https://listingsapi.com/api/v4/connected-accounts/disconnect-facebook \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "connectedAccountId": "d2397854-52c2-41d7-95f1-b90cba16498d" } }'

Yanıt, success ile birlikte data.fbBulkDisconnect şeklindedir. Bilinmeyen bir connectedAccountId için bile true olur; dolayısıyla "etkin bir bağlantı kaldırıldı" değil, "işlendi" anlamına gelir. Emin olmanız gerekiyorsa bağlı hesapları yeniden listeleyin.

7. Sonrasında ne olur

Bağlı her konum için data.platform: "facebook" içeren bir connection.location_connected olayı tetiklenir ve bağlantıyı kaldırdığınızda connection.location_disconnected tetiklenir. Facebook verilen yetkiyi geçersiz kılarsa connection.reauth_required alırsınız: yeni bir bağlantı oluşturun (1. adım) ve hesap sahibinden tüm izinleri vererek yeniden onaylamasını isteyin. Bağlantı kurulduğunda, konumun premium işletme kayıtlarındaki Facebook satırı SYNCED durumuna geçer, postSites: ["FACEBOOK"] geçerli bir hedef hâline gelir ve Facebook analiz uç noktası veri döndürmeye başlar.

Sonraki adımlar