Sunucunun FB sayfa bilgilerini çekmesi için uzun ömürlü FB erişim belirteci


115

Facebook erişim belirteçleri ve neden oldukları keder hakkında birçok soru olduğunun farkındayım, ancak çok fazla deneyime ve sinir bozucu derecede belirsiz blog makalelerini okumaya (FB ve diğerleri) rağmen, hala ihtiyaçlarıma net bir cevap bulmakta zorlanıyorum. . Şimdiye kadarki sürecimi kısaca özetlememe izin verin:

  • Sunucu tarafında tek bir Facebook Sayfasından gönderileri / durumları çekmesi gereken bir site oluşturuyorum
  • Ben o Facebook Sayfasının yöneticisiyim
  • Bir Facebook Uygulaması oluşturdum
  • Facebook Graph API Gezgini'ni kullanarak, uygulamalarıma ve hesabıma bağlanan ve sayfalarım için erişim belirteçlerini görüntülemek için hesabıma izin veren kısa ömürlü bir anahtar oluşturdum
  • Ben uzun ömürlü anahtarına benim kısa ömürlü anahtarı (60 gün) ala senaryoyu 4 dönüştürdüğünüz bu

Ve burada sıkıştığım yer burası. 60 günlük anahtarım, sunucumun gerekli bilgileri sayfadan çekmesi için iyi çalışıyor, ancak anlayabildiğim kadarıyla, bu 60 günlük anahtarı programlı olarak uzatmanın bir yolu yok. Ayrıca, Facebook Graph API Explorer'a manuel olarak gidip bir tane oluşturmadan yeni bir kısa ömürlü anahtar oluşturmanın bir yolunu bilmiyorum.

Kullanıcı tabanlı bir sistem değil, Facebook API'sine istekleri yapan benim sunucum olduğu için (bir kullanıcının Facebook uygulamasını tekrar yetkilendirmesini kolayca talep edebilirim), bu çok hantal bir sistem yaratıyor. Facebook kullanımdan kaldırıldığından beri offline_access, sunucumun kendi sayfamdan bilgi almasını sağlamanın gerçekten kalıcı bir yolu yok mu? Gerçekten elle yeni bir anahtar oluşturmam ve 60 günde bir sunucumu onunla manuel olarak güncellemem gerekecek mi?

Yoksa kaçırdığım bir şey mi var?

Güncelleme:

Daha önce burada bulunan adım adım kılavuz, kendi cevabına taşınmıştır .


Bu harika. Ben de aynı durumdayım ve bu konuyla ilgili bazı bilgiler arıyordum. Bu jetonun herhangi bir FB platformu politikasını ihlal etmemesi güvenli mi? Sadece emin olmak istiyorum.
onigunn

2
@asrijaal Facebook'un kendi belgeleri (Senaryo 5'e bir göz atın), bu sayfa erişim belirteçlerinin süresinin dolmadığını söylüyor. Facebook'un politikalarına uyduklarını varsaymanın güvenli olduğunu söyleyebilirim.
redhotvengeance

"Adım adım net bir süreç bırakmanın iyi olacağını düşündüm" - cennet korusun :) Teşekkürler @redhotvengeance
Steve McGill

Sayfa erişim belirteç url'nizde bir yazım hatası var. Bir olmalı? a & after hesapları değil. Bunun neden işe yaramadığını anlamaya çalışırken bir süre geçirdim. : P
Joren

@Joren Indeed - şimdi düzeltildi. Teşekkürler!
redhotvengeance

Yanıtlar:


189

Bunlar daha önce soruda yer alan adımlardır - bu cevaba taşınmışlardır.

Süresi dolmayan (@Igy'nin yardımıyla) bir Facebook Sayfa Erişim Jetonu oluşturmanın mümkün olduğunu bulduktan sonra, aynı şeyi arayan herkes için açık, adım adım bir kılavuz:

  1. Bilgi almak istediğiniz FB sayfasının yöneticisi olduğunuzdan emin olun
  2. Bir FB Uygulaması oluşturun (sayfa yöneticisi ile aynı kullanıcı hesabıyla olmalıdır)
  3. Başının üzerinde Facebook Graph API Explorer
  4. Sağ üstte, "Uygulama" açılır listesinden oluşturduğunuz FB Uygulamasını seçin
  5. "Erişim Jetonu Al" ı tıklayın
  6. manage_pagesİzni eklediğinizden emin olun
  7. Bu Graph API çağrısını yaparak bu kısa ömürlü erişim jetonunu uzun ömürlü bir jetona dönüştürün: https://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
  8. Geri dönen yeni uzun ömürlü erişim jetonunu alın
  9. Yeni uzun ömürlü erişim jetonunu kullanarak hesaplarınızı görmek için bir Graph API çağrısı yapın: https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  10. Kepçe access_tokenaralarından bilgileri çekerek olacağım sayfa için
  11. Ayarlandığını görmek için jetonu lifleyinExpires: Never !

Bunu yapmalı. Artık, aşağıdaki durumlar haricinde süresi dolmayan bir Facebook Sayfa Erişim Jetonunuz olmalıdır:

  • Facebook hesabınızın şifresini değiştirirsiniz
  • Hedef sayfa için yönetici erişimini kaybedersiniz
  • Facebook Uygulamanızı silerseniz veya yetkisini kaldırırsanız

Bunlardan herhangi biri erişim jetonunun geçersiz olmasına neden olur.

Eğer alıyorsanız (#100) Tried accessing nonexisting field (accounts) on node type (Page), gidin Erişim Jetonu Debugger , değerini kopyalamak User IDve 9. adımda URL "ben" bölümünü değiştirmek için kullanın.


2
6. adımı nasıl ve nerede yaparım?
Stefan Müller

5
@ StefanMüller Graph API Explorer sayfasında "Erişim Belirteci Al" ı tıkladığınızda, bir "İzinleri Seçin" iletişim kutusu açılır. manage_pagesSeçenek altında Extended Permissionssekmesi.
redhotvengeance

2
Harika! Bu bir cazibe gibi çalışıyor ve bu bir kullanıcı olarak değil, SAYFA olarak yayınlandı.
Benjamin Piette

3
Sanırım bu artık tarih dışı. ve yalnızca yaklaşık iki ay içinde sona eren bir erişim jetonu alırsınız.
Qaiser Wali

7
Bunların hepsini şimdi yaptım ve uzun ömürlü jeton kimliğinin 2 ay sonra sona ermesi ve sonsuz olmaması dışında çalışıyor. Ayrıca Acces Token Debugger , kısa ömürlü bir erişim belirtecini uzun ömürlü bir erişim belirtecine genişletmek için formun alt kısmında bir bağlantıya sahiptir.
SlimIT

15

Bu, Çevrimdışı Erişim kullanımdan kaldırma belgesinde ele alınmıştır

Sayfa yöneticisinin bir Sayfa Erişim Jetonunu ( /PAGE_ID?fields=access_tokenveya aracılığıyla /me/accounts) alması için 60 günlük jetonu kullanın - Sayfa erişim jetonunun sona erme süresi olmayacaktır


5
İç çekmek. Aslında bu bilet gibi görünüyor. Bu adımların olası her kombinasyonunu denediğime yemin edebilirdim - görünüşe göre gerçekten işe yarayan olanı kaçırdım. Ne kadar karmaşık bir dizi gerekli eylem. Yardımın için çok teşekkürler!
redhotvengeance

1
İnternette pek çok parça var, bu gerçekten işe yarayan bir parça.
Ernesto

Bu 60 günü page_access_tokenjavascript koduyla almanın bir yolu var mı? Almanın yolu gibi user_access_token> FB.getAuthResponse()['accessToken'];Teşekkürler!
Tulon

4

2019'da işe yarayan bir yaklaşım

Son zamanlarda benzer bir şey elde etmeye çalışıyordum (bu başlıkta açıklanan kullanım senaryosuna), ancak Facebook'un mevcut politikalarına saygı duyduğumdan emin olmak istedim, bu yüzden biraz araştırma yaptım ve burada bulduğum şeyi paylaşıyorum.

Benim kullanım durumum

Dolayısıyla, daha önce de söylediğim gibi, kullanım durumum burada anlatılana çok benziyor; yani:

  • Bir okul bölgesi için bazı işler yapıyorum.
  • Okul ulaşımıyla ilgili hemen hemen her şeyi yönetmek için bir yazılım aracı kullanıyorlar.
  • Bu araç, otobüs gecikme uyarıları ve okul kapanma uyarıları yayınladıklarında e-posta bildirimleri (abonelere) göndermelerine olanak tanır.
  • Topluluktaki pek çok insan örgütü Facebook sayfalarından takip ediyor ve bu uyarıları aradıkları tek yer orası.
  • Bu nedenle, kuruluşun bir çalışanının her bildirimi Facebook sayfasında manuel olarak yayınlaması gerekir (nakliye yazılımında oluşturmanın yanı sıra). Dahası, bu bildirimlerin süresi sonunda sona erer (veya süresi dolmadan önce silinir), bu nedenle çalışanın bunları manuel olarak da silmek için daha sonra geri dönmesi gerekir.
  • Bu bir zaman belidir, bu yüzden burada yapmaya çalıştığımız şey, yazılım aracının veritabanını yeni (ve süresi dolmuş) bildirimler için periyodik olarak sorgulayan ve bunları Facebook sayfasında güncelleyen (yani ekle ve kaldır) basit bir sistem olarak geliştirmektir.

Bu benim görüşüme göre meşru bir kullanım örneğidir, ancak bunu Facebook politikalarına uygun bir şekilde nasıl uygulayacağımdan emin değildim.

Kabul edilen cevap

Kabul edilen cevabın adımlarını takip ettim ve işe yaradı, ancak işler değişmiş gibi görünüyor: şimdi, oluşturulan sayfa simgesinin süresi dolmasa bile, access to datayaklaşık 60 gün sonra süresi doluyor. Prosedürü takip edip sayfa jetonunu FB Token Hata Ayıklayıcı Aracında incelerseniz, bunu da göreceksiniz .

Ayrıca, üretilen sayfa token'larının kullanıcı hesabına bağlı olması da talihsiz bir durumdur çünkü eğer kullanıcı şifresini güncellerse sayfa tokeni de geçersiz hale gelir.

2019'da nasıl yapılır

Birkaç saatlik araştırmadan sonra, şu Facebook dokümantasyon makalesine rastladım: Doğrudan İşletmeler için İşletme Girişi .

Yukarıdaki makalede açıklanan adımları izleyerek, belirli bir Facebook kullanıcı hesabıyla ilişkili olmayan ve süresi dolmayacak bir sayfa jetonu oluşturmanın artık mümkün olduğu ortaya çıktı (FB Uygulaması silinmedikçe veya temel uygulama jetonu yoksa silinir, bilirsiniz ...)

İşte adımlar ve en önemli kısımlar:

  • Bir Business Manager hesabına ihtiyacınız var .
    • Doğrulama gerekecek ve dijital bir sözleşmenin imzalanması gerekecek.
  • Hedef Facebook sayfasını o hesaba eklemeniz gerekir.
  • Bir Facebook Uygulaması oluşturmanız ve bu uygulamayı da aynı İşletme Yöneticisi hesabına aktarmanız gerekir.
  • Aşağıdaki izinler gerekli olacağından, uygulamanın Facebook'un inceleme sürecinden geçmesi gerekecek: manage_pagesve publish_pages.
    • Önemli not Oluşturma sayfası belirteci kullanılarak yapılan gönderilerin, uygulama yöneticileri dışındaki kullanıcılar tarafından görülebilmesi için, o uygulamanın yayınlanmış ve onaylanmış olması gerekir.
    • İnceleme için göndermeden konsepti yine de deneyebilirsiniz, ancak gönderiler herkese açık olmayacaktır.
  • Business Manager hesabında (yalnızca uygulamanız ve sayfanız hesaba eklendikten sonra), Sistem Kullanıcısı adı verilen bir şey oluşturmanız ve bu kullanıcıya hedef Facebook sayfasına yönetici rolünü (veya izinlerini) vermeniz gerekir .
    • Bir sistem kullanıcısı İşletme Yöneticisi hesabına aittir ve belirli bir kullanıcıya bağlı değildir. Şu anki anlayışıma göre, bir sistem kullanıcısı için önemli bir kullanım durumu, Facebook'un Graph API'sine programlı erişimdir (tam da ihtiyacımız olan şey).
  • Ardından, bu sistem kullanıcısı için bir erişim jetonu oluşturmanız gerekir (bu hiçbir zaman sona ermeyecektir). Hangi uygulamayı seçmeniz istenecektir. Daha sonra hedef uygulamanızı seçeceksiniz.
  • Daha sonra, hiçbir zaman sona ermeyen bir sayfa jetonu oluşturmak için oluşturulan uygulama jetonunu kullanmanız gerekecek. Prosedür bu makalede şu şekilde açıklanmaktadır :
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
  • Bu kadar.

Bu jetonun süresi asla dolmayacak ve belirli bir Facebook kullanıcısına bağlı olmayacak, bu yüzden tam da ihtiyacımız olan şey bu!

Son kısım, Facebook uygulamanızın Facebook tarafından onaylanmasını sağlamaktır. Aslında en önemli kısım, çünkü insanlar gönderilerimizi görmezse tüm prosedür değersizdir.

Sonunda Facebook onu reddetmeden müşterim için bir şeyler inşa etmek için yukarıdaki prosedüre güvenebileceğimi kesin olarak bilmek istedim, bu yüzden önceden (yani müşterimin projesinde çalışmaya başlamadan önce), tüm süreci uyguladım. bir sayfa, uygulama, İşletme Yöneticisi hesabı vb. oluşturmak. İşletmemi doğruladım. Uygulamamı incelenmek üzere gönderdim. İsteğimde, kullanım durumum hakkında çok net bir şekilde konuştum ve uygulamanın "kendi kendine kullanım" için olduğunu vurguladım (yani, kuruluş diğer Facebook kullanıcıları için değil, kendisi için bir uygulama geliştiriyor). 24 saatten az olmadan onay aldım.

Uygulama inceleme süreciyle ilgili birkaç not daha:

  • Uygulama için bir platform seçmem gerekti, bu yüzden web sitesini seçtim .
  • Uygulamanın neden iki izne ihtiyacı olduğunu ve bunları nasıl kullanacağını belirtmem gerekiyordu.
  • İnceleyenin neden uygulamamda oturum açıp deneyemeyeceğini belirtmem gerekiyordu (örneğin, uygulama bir çalışan süreç tarafından kullanılacağı için).
  • Zorunlu ekran curlkayıtları için, yardımcı programı kullanarak terminaldeki manuel işlemleri basitçe sundum (sayfa jetonunu oluşturmak ve Facebook sayfasına gönderiler yapmak için). Ayrıca, sistem kullanıcısını sayfaya bağlamak ve bir belirteç oluşturmak için Business Manager'ı nasıl kullandığımı vb. Gösterdim.
  • Yine, kullanım durumum hakkında çok spesifik davrandım ve bunun yardımcı olduğunu düşünüyorum.

Umarım bu bilgiler benzer kullanım durumlarına sahip kişiler için yararlı olur.


1

Adım adım rehber için @redhotvengeance'a çok teşekkürler.

Bir süre sonra, şimdi Facebook belgelerinde açıkça anlatılıyor:

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

Sayfa Erişim Belirteçlerini Genişletme

Uygulamalar, Manage_pages izniyle kimlik doğruladıklarında Sayfa yöneticisi kullanıcılarından bir sayfa erişim belirteci alabilir. Bu sayfa erişim jetonunu almak için kullanılan kullanıcı erişim jetonu kısa ömürlü ise, sayfa erişim jetonu da kısa ömürlü olacaktır.

Daha uzun ömürlü bir sayfa erişim jetonu almak için, Kullanıcı erişim jetonunu yukarıdaki gibi uzun ömürlü bir jetonla değiştirin ve ardından Sayfa erişim jetonunu isteyin. Ortaya çıkan sayfa erişim belirtecinin herhangi bir son kullanma süresi olmayacaktır.


0

Ayrıca facebook'taki uygulama kontrol panelinden kopyalayıp geçebilirsiniz. Adımlar:

  1. Https://developers.facebook.com adresine gidin

  2. Sayfanın sağ üst köşesinden uygulamanızı seçin (nasıl göründüğünün resmi)

  3. Soldaki seçeneklerden Messenger'a tıklayın (otomatik olarak ayarlara gidecek) (neye benzediğini gösteren resim)
  4. Sayfadaki "Token Oluşturma" bölümüne gidin. Jetonu hangi sayfa için oluşturmak istediğinizi seçin. (bu bölümün nasıl göründüğünün resmi)
  5. İhtiyaç duyduğunuz her yerde sayfa simgenizi kopyalayıp yapıştırın.

Teoride jetonunuzun süresi dolmazken, oturum açtığınız facebook hesabına doğrudan bağlı olduğunu unutmayın. Diyelim ki şifrenizi değiştiriyorsunuz veya hesabınız ile uygulamanız arasındaki izinleri kaldırıyorsunuz, ardından jetonunuz artık geçerli olmayacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.