facebook: kalıcı Sayfa Erişimi Simgesi?


193

Veri kaynaklarından biri olarak facebook sayfaları olan bir proje üzerinde çalışıyorum. Herhangi bir GUI olmadan düzenli olarak ondan bazı veriler alır. Ardından zaten sahip olduğumuz verileri göstermek için bir web uygulaması kullanıyoruz.

Tüm bilgiler herkese açık değildir. Bu, verilere bir kez erişmem ve daha sonra saklamam gerektiği anlamına gelir. Ancak, süreci bilmiyorum ve henüz bu konuda iyi bir eğitim bulamadım. Sanırım ihtiyacım var access_token, kullanıcıdan adım adım nasıl alabilirim? Kullanıcı bir facebook sayfasının yöneticisidir, sayfaya bizim FB uygulamasını eklemesi gerekecek mi?

EDIT: Bahşiş için teşekkürler @phwd. offline_accessArtık mevcut olmasa bile kalıcı bir sayfa erişim belirtecini nasıl alacağımı öğrettim .

EDIT: Ben sadece burada cevap bulundu: Sunucunun FB sayfa bilgilerini çekmek için uzun ömürlü FB erişim jetonu



Kesinlikle öyle görünüyor. Daha iyi bir başlığım var, daha ayrıntılı bir sorusu var ve ikimiz de kabaca aynı cevabı kabul ettik.
Vlasec

Yanıtlar:


638

Facebook'un genişleyen sayfa belirteçleri belgelerinde belirtilen talimatları izleyerek süresi dolmayan bir sayfa erişim belirteci alabildim.

Aksi belirtilmedikçe, tüm bu adımlar için Grafik API Gezgini'ni kullanmanızı öneririm .

0. Facebook Uygulaması Oluştur

Zaten bir uygulamanız varsa 1. adıma atlayın.

  1. Git My Apps .
  2. "+ Yeni Uygulama Ekle" yi tıklayın.
  3. Bir web sitesi uygulaması kurun.

İzinlerini veya herhangi bir şeyi değiştirmeniz gerekmez. Erişim simgenizi bitirmeden önce gitmeyecek bir uygulamaya ihtiyacınız var.

1. Kısa Süreli Kullanıcı Erişim Jetonu Alın

  1. Git Graph API Explorer .
  2. Erişim kodunu almak istediğiniz uygulamayı seçin ("Uygulamalarım" menüsünde değil, "Uygulama" açılır menüsünde).
  3. "Jeton Al"> "Kullanıcı Erişim Jetonu Al" ı tıklayın.
  4. Açılır pencerede, "Genişletilmiş İzinler" sekmesi altında "manage_pages" i işaretleyin.
  5. "Erişim Kodunu Al" ı tıklayın.
  6. Hedef sayfayı yönetmek için erişimi olan bir Facebook hesabından erişim izni verin. Bu kullanıcı nihai erişimi kaybederse, süresi dolmayan erişim belirtecinin çalışmasının durduracağını unutmayın.

"Erişim Simgesi" alanında görünen belirteç, kısa ömürlü erişim simgenizdir.

2. Uzun Ömürlü Erişim Jetonu Oluşturun

Aşağıdaki bu talimatları Facebook dokümanlardan, bir GET isteği yapmak

https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} & client_secret = {app_secret} & fb_exchange_token = {short_lived_token}

uygulamanızın kimliğini ve sırrını ve önceki adımda oluşturulan kısa ömürlü jetonu girme.

Sen Graph API Explorer kullanamazsınız . Nedense bu istek üzerine takılıyor. Bence yanıt JSON değil, bir sorgu dizesi. Bu bir GET isteği olduğundan, tarayıcınızdaki URL'ye gidebilirsiniz.

Yanıt şu şekilde görünmelidir:

{"access_token": " ABC123 ", "token_type": "taşıyıcı", "geçerlilik süresi_içinde": 5183791}

"ABC123" uzun ömürlü erişim simgeniz olacak. Doğrulamak için Access Token Hata Ayıklayıcısına koyabilirsiniz . "Sona eriyor" altında "2 ay" gibi bir şey olmalıdır.

3. Kullanıcı Kimliği Alın

Uzun ömürlü erişim belirtecini kullanarak,

https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}

idAlan hesap kimliğidir. Bir sonraki adım için buna ihtiyacınız olacak.

4. Kalıcı Sayfa Erişim Jetonu Alın

GET isteğinde bulunun

https://graph.facebook.com/v2.10/ {account_id} / accounts? access_token = {long_lived_access_token}

JSON yanıtının dataaltında kullanıcının erişebileceği bir öğe dizisi olan bir alan olmalıdır . Kalıcı erişim belirteci istediğiniz sayfanın öğesini bulun. access_tokenAlanı, daimi erişim belirteci olmalıdır. Kopyalayın ve Access Token Hata Ayıklayıcısında test edin . "Sona eriyor" altında "Asla" yazmalıdır.


14
Facebook bunu berbat etti, böylece artık çalışmıyor. :-( Yukarıdaki adım 1.5'ten sonra ("Erişim Simgesini Al" düğmesini tıkladığınızda) aşağıdaki iletişim kutusunda "Giriş İncelemesine Gönder - Aşağıdaki izinlerin bir kısmının Facebook tarafından kullanımı onaylanmadığını" belirten kırmızı bir uyarı görünür ve ayrıca "Bu, uygulamanın Facebook'a gönderilmesine izin vermez" metniyle birlikte asma kilit görünür. Bu nedenle, yukarıdaki 1.5 ile 1.6 arasındaki yeni bir adım eklenerek "Uygulamanızla çok fazla sıkıcı iş yapın, sonra inceleme için gönderin, sonra dua edin ve bekleyin. ":-( Herkes saf bir test uygulaması için bu konuda bir yol biliyor?
QuestionOverflow

10
Son adıma geçen ve tarayıcı geri dönen herkes için: message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100 FB Access Token Debugger'a gidin ve long_lived_access_token'ınızı test edin. Birkaç dakika sonra, geri dönüp long_lived_access_token'ı tekrar kontrol ederseniz, FB Access Token Hata Ayıklayıcı'nın daha sonra bu
tokenin

14
Yemin ederim, eğer bu cevabı okumamış olsaydım, hala kısa ömürlü bir jetonla kafamı duvara vuracaktım ... Son bölümün işe yaramadığı için ... (#100) Tried accessing nonexisting field (accounts) on node type (Page)hatayı alıyorum .. Adım 5 ile devam edemiyorum ... Yine de, teşekkür ederim ... LE: @Vlasec tarafından verilen cevabın son bölümüne göz atın. / {PageId}? Fields = access_token & access_token = {long_lived_access_token} sorgusunu çözerek kalıcı erişim belirtecini alabilirsiniz.
Mujnoi Gyula Tamas

15
https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
V2.7

5
Son adımda şu istisna alıyorum {"error": {"message": "Sözdizimi hatası \" Karakter 11'de \ "? \". \ "Yerine dizenin beklenen sonu: access_toke \ u200c \ u200bn" , "type": "OAuthException", "code": 2500, "fbtrace_id": "A8 + gtSaShIO"}} Herkes nasıl çözüleceğini biliyor ????
Lucy

89

İşte benim sadece Grafik API Gezgini ve Erişim Jetonu Hata Ayıklayıcı kullanarak benim çözüm :

  1. Grafik API Gezgini:
    • Sağ üst açılır menüden Uygulamanızı seçin
    • Açılır menüden (erişim belirteci alanının sağında) "Kullanıcı Erişim Simgesini Al" ı ve gerekli izinleri seçin
    • Kullanıcı erişim kodunu kopyala
  2. Jeton Hata Ayıklayıcısına Erişim:
    • Kopyalanan jetonu yapıştırın ve "Hata Ayıkla" ya basın
    • "Erişim Kodunu Genişlet" e basın ve oluşturulan uzun ömürlü kullanıcı erişim kodunu kopyalayın
  3. Grafik API Gezgini:
    • Kopyalanan belirteci "Erişim Jetonu" alanına yapıştırın
    • "PAGE_ID? Fields = access_token" ile bir GET isteği yapın
    • Yanıtta kalıcı sayfa erişim belirtecini bulun (düğüm "access_token")
  4. (İsteğe bağlı) Erişim Simgesi Hata Ayıklayıcısı:
    • Kalıcı jetonu yapıştırın ve "Hata Ayıkla" ya basın
    • "Son kullanma tarihi" "Asla" olmalıdır

(API Sürüm 2.9-2.11, 3.0-3.1 ile test edilmiştir)


3
Basılacak "Erişim Jetonunu Genişlet" düğmesi yoktur. Belki de çıkardılar.
Cesar Bielich

4
"Uzat" düğmesini görüyorum
Eduardo

2
Erişim belirtecini (adım 2) genişletip tekrar hata ayıkladıktan sonra, süresi asla dolmamalıdır. Sadece 3. ve 4. adımları geçebilirsiniz.
daniel_serretti

1
Bu yanıt için teşekkürler, yukarıdaki büyük cevaptan daha kolay anlaşılır. Gerçekten yardımcı oldu.
Paul Laffitte

2
Ah ahbap, ateştesin! Çok teşekkürler! Bu seçeneği bulmak için çok zaman harcadım, çünkü bir uygulamada hata ayıklayamadım!
Killuminati

11

Vlasec yanıtında önerilen adımlara ek olarak şunları kullanabilirsiniz:


3
Bu artık işe yaramıyor. Jeton sadece bir saat sürer
flashsnake

@flashsnake bunu gerçekten v2.8'de test ettiniz mi? jeton hata ayıklayıcısı, Expires
Never'i

Hatırlamıyorum. Test etmiş olabilirim.
Flashsnake

11

Daha kolay hale getirmek için bir PHP betiği yaptım. Bir uygulama oluşturun . In Graph API Explorer sizin Uygulaması'nı seçin ve manage_pages ve publish_pages izni ile belirteç bir kullanıcı olsun. Sayfanızın kimliğini Hakkında sayfasının alt kısmında bulabilirsiniz. Yapılandırma değişkenlerini doldurun ve betiği çalıştırın.

<?php
$args=[
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
];

echo generate_token($args);

function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
    foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}

1
+1 Sadece denedim ve tüm bu kısmen amortismanlı cevaplar arasında harikalar yaratıyor! Bu yanıtı seviyorum çünkü gelecekteki değişiklikler burada ve orada küçük bir düzenleme ile kolaydır.
Siddhant Rimal

Maalesef, bu yanıtı düzenlememe izin verilmedi. Grafik API 2.9 için bunun yerine başka bir cevap yazdım .
Siddhant Rimal

Görünüşe göre 2.9 ile bir şeyleri değiştirdiler çünkü bu örneklerin hiçbiri artık çalışmıyor
Cesar Bielich

10

Hayatları kolaylaştırmak için bir başka PHP yanıtı. Facebook Graph API 2.9 için güncellendi . Sadece doldurun ve yükleyin.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
    if($r->id==$args['pageid']) $finaltoken=$r->access_token;
    return $finaltoken;
}
?>

Zeyilname: (alternatif)

Grafik 2.9'dan sonra, kısa bir erişim belirtecinde hata ayıkladıktan sonra , Erişim Simgesi Hata Ayıklayıcı aracının altındaki Erişim Simgesini Genişlet'i tıklatarak uzun bir erişim belirteci alma zorluğunun çoğunu atlayabilirsiniz . Ve hakkında bilgi ile donatılmış , kalıcı erişim jetonu almak için aşağıdaki php çalıştırın.pageidlonglivedtoken

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'longlivedtoken'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>

İkinci kod size çok fazla güçlük kazandırsa da, acele çok fazla olmadıkça ilk php kodunu çalıştırmanızı öneririm çünkü pageid ve userid'i çapraz kontrol eder. Yanlışlıkla kullanıcı belirtecini seçerseniz, ikinci kod çalışmaz.

DW1 sayesinde ve Rob'a


Erişim Simgesini Uzat düğmesi yok, bir şey mi eksik?
Cesar Bielich

@CesarBielich: Önce Kısa Erişim Jetonunda hata ayıklamanız gerekiyor. Kısa bir uygulama belirtecinde hata ayıkladığınızda sonuçların altında görünür . Göremediğiniz için, bir kullanıcı erişim belirtecinde hata ayıklamış olmanız gerekir. Bu yanıtın erişim belirtecini kullanmak için geçerli olmadığını unutmayın; yalnızca uygulama erişim belirteci kullanılabilir Kullanıcı Erişimi Belirteçleri kalıcı olamaz. Uzun Jetonlara kadar üretilebilirler.
Siddhant Rimal

1
@CesarBielich Sanırım burada bir şeyler karıştırıyorsunuz. Kullanıcılar, Uygulamalar ve Sayfalar için erişim belirteçleri oluşturabilirsiniz. Jeton talep edebilmeniz için Uygulama alanı yerine oluşturduğunuz bir uygulamayı seçmeniz gerekir Graph API Explorer.
Siddhant Rimal

@CesarBielich: İkincisi sizin için çok kafa karıştırıcıysa ilk yöntemi kullanın. Sadece ilk alandaki giriş alanlarını doldurursunuz ve her şey otomatik olarak gerçekleşir :)
Siddhant Rimal

Üzgünüm, dün gece yaptığım farklı bir yazı hakkında yorum yapıyordum lol. Evet, nedense seninkini alamıyordum ve beni hiç bitmeyen bir jeton haline getiremedim. v2.9İkinci çağrıda kaldırmak zorunda kaldım ve bu benim için çalıştı. Wierd
Cesar Bielich

6

Şu adımları denedim: https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer

Kalıcı Sayfa Erişim Jetonu Alın

  • Grafik API Gezgini'ne gidin
  • Senin seçin app içinde Başvurusu
  • Uzun ömürlü erişim kodunu Access Jetonuna yapıştırın
  • Yanında Erişim Token , sizin için belirteç bir erişim istediğiniz sayfayı seçin. Erişim belirteci yeni bir dize olarak görünür.
  • İ tıklayınBu erişim belirtecinin özelliklerini görmek
  • Özellikleri kontrol etmek için “Erişim Jetonu Hata Ayıklayıcı” aracını açmak için tekrar “Erişim Jetonu Aracında Aç” düğmesine tıklayın

Bir ipucu, sadece sayfa dili İngilizce olduğunda benim için çalıştı .


1
BU ADAM!!! 5 sanal bira. Bu, onaylanmış cevabın 5. adımının yerine geçerek çalışır. grafik sürümü 2.8
Kök -

1
Facebook API'yı kullanabilmek için haftaları boşa harcadım. Bugüne kadar karşılaştığım en karışık ve tutarsız belirteç. Bu çözüm hala mükemmel çalışıyor .. Ekim, 2017
user919426

4

Yalnızca sayfa verisi talep ediyorsanız, bir sayfa erişim belirteci kullanabilirsiniz. Kullanıcı erişim belirtecini almak için kullanıcıyı yalnızca bir kez yetkilendirmeniz gerekir; iki ay geçerli olacak şekilde genişlettikten sonra sayfa için jetonu isteyin. Bütün bunlar Senaryo 5'te açıklanmaktadır . Alınan sayfa erişim belirtecinin yalnızca kullanıcı erişim belirteci geçerli olduğu sürece geçerli olduğunu unutmayın.


Üzgünüm, belki yeterince net değildim. Jetonları okudum, sadece kullanıcıdan nasıl izin isteyeceğini ve bir jetonu uygulamama nasıl aktaracağımı öğrenmem gerekiyor. Görünüşe göre, tek amacı izin isteyen bir facebook "uygulaması" oluşturmak gerekiyor gibi görünüyor, doğru mu?
Vlasec

1
Burada açıklandığı gibi bir uygulama yoluyla token bir erişim almak için tek yol düzeltin @Viasec developers.facebook.com/docs/facebook-login
phwd

Teşekkürler, bir şekilde göz ardı etmeliydim, yanlış API'lar bölümünde bir yerde olduğunu varsaydım. Buna bakacağım, umarım sorumu cevaplar.
Vlasec

4

Daimi erişim jetonunu alırken Donut'un bahsettiği gibi 5 adımı takip ettim . Bununla birlikte, 5. adımda kalıcı erişim belirteci üretilirken, uzun ömürlü erişim belirtecini döndürme (2 ay boyunca geçerlidir) kalıcı erişim belirteci (hiçbir zaman sona ermez). Ne fark ettim ki şu anki API API sürümü V2.5. V2.5 ile kalıcı erişim belirteci almaya çalışırken, uzun ömürlü erişim belirteci verir. V2.2 ile API çağrısı yapmaya çalışın (grafik api explorer'daki sürümü değiştiremiyorsanız, https: //graph.facebook.com/v2.2/ {account_id} / accounts? access_token = {long_lived_access_token} V2.2 ile yeni sekmede), kalıcı erişim belirtecini alacaksınız (Bu hiçbir zaman sona ermez )


Sonuçlara ulaşmak için api sürümlerine geri dönmek, özellikle API sürümünün belirli bir süre sonra sona ermesinden sonra, yalnızca gelecekte bulduğum daha fazla çalışmayla sonuçlanacaktır.
SlickRemix

null döndürür :( Sayfa erişim belirteci nasıl alınır?
Nancy thakkar

3

Bahsedilen yöntemlere ek olarak, sunucudan sunucuya uygulamalar için bu kalıcı erişim belirteci formunu da kullanabileceğinizi belirtmek gerekir: app_id | app_secret Bu tür erişim belirtecine App Token denir. Genellikle Grafik API'sini çağırmak ve uygulama arka ucunuzdaki genel düğümleri sorgulamak için kullanılabilir. Burada bahsedilmiştir: https://developers.facebook.com/docs/facebook-login/access-tokens


1
Sayfalara her türlü erişime izin veriyor mu? Bence değil ve bu durumda soruyu gerçekten cevaplamıyor.
Vlasec

@Vlasec Herkese açık bir yayındaki yorumlara erişmenizi sağlar
Ali Gajani

1
Bu bazıları için yeterli olsa da, soruyu cevaplamıyor.
Vlasec

2

@Donut sayesinde JavaScript'te asla süresi dolmayan erişim kodunu almayı başardım.

// Initialize exchange
fetch('https://graph.facebook.com/v3.2/oauth/access_token?grant_type=fb_exchange_token&client_id={client_id}&client_secret={client_secret}&fb_exchange_token={short_lived_token}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Get the user data
    fetch(`https://graph.facebook.com/v3.2/me?access_token=${json.access_token}`)
    .then((data) => {
        return data.json();
    })
    .then((userData) => {
        // Get the page token
        fetch(`https://graph.facebook.com/v3.2/${userData.id}/accounts?access_token=${json.access_token}`)
        .then((data) => {
            return data.json();
        })
        .then((pageToken) => {
            // Save the access token somewhere
            // You'll need it at later point
        })
        .catch((err) => console.error(err))
    })
    .catch((err) => console.error(err))
})
.catch((err) => {
    console.error(err);
})

ve kaydedilmiş erişim belirtecini şu şekilde kullandım

fetch('https://graph.facebook.com/v3.2/{page_id}?fields=fan_count&access_token={token_from_the_data_array}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Do stuff
})
.catch((err) => console.error(err))

Umarım birisi bu kodu kesebilir çünkü biraz dağınık ama düşünebildiğim tek yol buydu.


2

Facebook uygulamanız varsa, app-id ve app-secret ile deneyebilirsiniz.

Sevmek :

access_token={your-app_id}|{your-app_secret}

belirtecin sık sık değiştirilmesi gerekmez.


1

Uygulama isteği sınırına ulaşıldı (# 4) - FB API v2.1 ve üstü

Bu cevap beni "bizim için nihai cevaba" götürdü ve bu yüzden çok ilgili, bu yüzden buraya ekliyorum. Yukarıdakilerle ilgili olsa da, farklıdır ve FB, süreci biraz basitleştirmiş gibi görünüyor.

Sitemizdeki paylaşım sayımız FB'nin api'yi v 2.1'e devretmesiyle durdu. Bizim durumumuzda zaten bir FB APP vardı ve biz FB giriş kullanmıyordu. Yapmamız gereken şey, yeni istekleri yerine getirmek için bir FB APP Jetonu almaktı . Bu, 23 Ağustos 2016'dan itibaren.

  1. Https://developers.facebook.com/tools/explorer adresine gidin.
  2. API sürümünü seçin ve ardından GET işlevini kullanın ve aşağıdakileri yapıştırın:

    /oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials
    

    Uygulama sayfanızdan uygulama kimliğinizi ve uygulama sırrınızı almak isteyeceksiniz . Ana FB Apps geliştirici sayfası

  3. Grafik sorgusunu çalıştırın ve şunu göreceksiniz:

    {
       "access_token": "app-id|app-token",
       "token_type": "bearer"
    }
    

    Nerede

    "Uygulama kimliği"
    ve
    "Uygulama-belirteci"
    FB uygulama sayfanızdan ve yeni aldığınız FB App HASH uygulamasından uygulama kimliğiniz olacaktır.

  4. Ardından yeni APP erişim simgenizi test edin: FB Access Token tester

  5. Görmelisiniz ki, yapıştırarak

    "Uygulama-belirteci"
    belirteç test cihazına, son kullanma tarihi / saati olmayan tek bir uygulama tabanlı belirteç.

Bizim durumumuzda FB js sdk kullanıyoruz, bu yüzden çağrımızı böyle olacak şekilde değiştirdik (lütfen sadece SADECE paylaşım sayısını alır, eskisi gibi paylaşım ve yorum sayısını birleştirmez) :

FB.api(
    '/','GET',{
    // this is our FB app token for our FB app 
        access_token: FBAppToken,
        "id":"{$shareUrl}","fields":"id,og_object{ engagement }"
}

Bu şimdi düzgün çalışıyor. Bu, FB api'ye tokenize talepler yapmaya başlamamız gerektiğini doğrulamak için FB ile çok fazla arama ve resmi bir hata raporu aldı. Bir yana, onlar (FB) tokenize isteği söz Hata kodu (# 4) bir ipucu eklemek istedi.

Yeni geliştiricilerimizden birinden, FB yorum sayımızın da yeni tokenize isteklere duyulan ihtiyaç nedeniyle bozulduğuna dair başka bir rapor aldım, bu yüzden bunu güncelleyeceğim.


1
Her zaman giriş yapan ve uygulamaya erişim izni olan uygulamanın kullanıcısıydı. Her neyse, bu bir sayfa erişim belirteci oluşturmuyor gibi görünüyor, bu yüzden sorunun geçerli bir yanıtı olmadığını düşünüyorum. İlginç olsa - belki kendi Q / A yapmak?
Vlasec

1

Bu örneklerin birçoğu işe yaramıyor, bunun 2.9v çıkması nedeniyle olup olmadığından emin değilim ama başımı çarptım. Her neyse @ dw1 sürümünü aldım ve @KFunk video yardımıyla biraz değiştirdim ve 2.9 için bu çalışmayı aldım. Bu yardımcı olur umarım.

$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r = json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}

Güzel bir snippet, ancak bu soru PHP'de nasıl yapılacağı değil, Java veya .NET'te de yapılabilen API'nin nasıl kullanılacağı ile ilgilidir. Örneğin Java ile yapmam gerekiyordu. Sahte kod veya adım adım kılavuz PHP kullanmayanlar için daha yararlı olacaktır.
Vlasec

2
@Vlasec Bu PHP pasajının herhangi bir sahte koda oldukça yakın olduğunu ve anlaşılması çok kolay olduğunu iddia ediyorum. Casar sadece facebook tarafından sağlanan bazı API'ları kullanıyor. Geri kalan şeyler kendi kendini açıklar niteliktedir.
Siddhant Rimal

0

Nisan 2020 itibariyle, daha önce kalıcı olan sayfa jetonlarımın süresi 1 ila 12 saat arasında dolmaya başladı. Bir manage_pagesönceki hedefe ulaşmak için kullanıcı belirteçleri kullanmaya başladım (bir Sayfanın Etkinliklerini sorgulama). Bu jetonlar kalıcı gibi görünüyor.

Hangi paramların gerekli olduğunu ve kalıcı bir belirteç elde etme yöntemlerinin çalıştığını takip etmek için github.com/k-funk/facebook_permanent_token adresinde barındırılan bu yayında bulunan bilgilere dayalı bir python betiği oluşturdum .


-1

Gerçekten çok yardımcı olan bu aracı ifade eden bu cevabı buldum .

Umarım bu cevabı okuduğunuzda hala geçerlidir.


TAMAM. Donut'un cevabı hala çalışıyor mu yoksa ekstra bir adım mı gerekiyor?
Vlasec
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.