Facebook grafik API - OAuth Token

11 Cevap php

Ancak ben OAuth gelen retriving ediyorum belirteç çalışıyor görünmüyor, yeni grafik API kullanarak veri almak için çalışıyorum.

Ben aşağıdaki gibi yapıyorum çağrı;

$token = file_get_contents('https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=<app_id>&client_secret=<app secret>');

Bu 41 bir dize uzunluğu ile bir belirteci döndürür. Sana ben, 0 tüm numaraları dönüştürülür (aşağıda bir örnek ', bir' bütün 'A' harfleri ve küçük harf vermiş döndürülen ne bir örnek vermek gerekirse

access_token=000000000000|AaaAaaAaaAAaAaaaaAaaAa0aaAA.

Ben belirteç bu erişim almak ve veri için arama isteği takın, o şey döner gibi, doğru simge olması görünmüyor. Ben aşağıdaki gibi veri araması yapmak;

file_get_contents('https://graph.facebook.com/<my_page's_id>/statuses?access_token=000000000000|AaaAaaAaaAAaAaaaaAaaAa0aaAA.')

Ben doğrudan el tarayıcısı aracılığıyla bu sayfa almak Ben bir 500/Internal Sunucu hata iletisi alabilirsiniz.

Herhangi bir yardım grately mutluluk duyacağız.


Güncelleme:

Ben beri kıvırmak () file_get_contents den yöntemini değiştirdik. Başlıklarını retreiving I aşağıdaki hata iletisini alabilirsiniz ...

{"error":{"type":"OAuthException","message":"Missing client_id"}}

ama benim sonrası dizi 'CLIENT_ID' içerir?!

11 Cevap

Don't use type=client_cred, this is not the access token that a user grants for your app to use. You don't need redirect_uri or code or any approval to get the client_cred type access token.

Facebook implements an early draft of OAuth 2 at this time. So there is not support for "state" yet.

But it is nice that you can suffix your state to the redirect_uri, the important point to note here is that the site url that you specified (which is the redirect_uri)

Bir olmamalıdır

question mark at the end or anywhere in what you suffix as client state, encoded or not. If you did, you will get the dreaded "Error validating verification code"

Böyle kullanma

http://www.Redirect.com?

Doğru URL olduğunu http://www.Redirect.com/

Umarım yardımcı olur.

Bu :-) benim için çalışıyor

header('Location: https://graph.facebook.com/oauth/access_token?' . http_build_query(array(
    'client_id'     => FB_APP_ID,
    'type'          => 'client_cred',
    'client_secret' => FB_SECRET,
    'code'          => $code)));

Tabii ki yerine file_get_contents kullanmak ve cevaba belirteci ayrıştırma

Ben aynı sorun koştu ancak (o da şartname okumamıştım ben iki farklı yönlendirme URL'ler geçirilen bu basitçe bir eğik çizgi veya soru işareti vardı sorun redirect_uri parametre kodlama değil çıktı, ya da zaman).

Redirect_uri sadece "kod" belirteci ile geri güvenerek partiye yönlendirmek için bir kez yönlendirme (ilk kez) olarak kullanılır. 2. zaman, redirect_uri auth sunucuya geri geçirilir ancak (yönlendirmek) beklediğiniz gibi alışık değil bu sefer daha ziyade kodu doğrulamak için kimlik doğrulama sunucusu tarafından kullanılır. Sunucu access_token ile yanıt verir.

http://tools.ietf.org/html/draft-ietf-oauth-v2-05#section-3.5.2

Sen facebook belgelerine (korkunç olan) fetch diyor ki "fetching https://graph.facebook.com/oauth/access_token tarafından bir erişim belirteci için değiştirin." Farkedeceğiniz

Içeri access_token almak Özetle, ben, Uri için özel bir şey kodlamak veya yapmak yoktu, sadece iki kez aynı redirect_uri geçmek, ve fetch 2. sayfa.

Sen Kıvrılmaları kullanarak terminali (OSX Kullanıcılar) üzerinden bir erişim belirteci talep edebilir:

curl -F type=client_cred -F client_id=xxxxxxxxxxxxxxx -F client_secret=c0f88xxxxxxxxxxxxxxxxxx1b949d1b8 https://graph.facebook.com/oauth/access_token

Eğer erişim belirteci sahip olduktan sonra yeni grafik API aracılığıyla değişiklikleri yapar gelecek kıvırmak istekleri kullanabilirsiniz:

Bir profil id bir mesaj göndermek:

curl -F 'access_token=xxxxxxxxxxxxx|mGVx50lxxxxxxxxxxxxhzC2w.'  -F 'message=Hello Likers'  -F 'id=1250000000000905'  https ://graph.facebook.com/feed

Lütfen dikkat

=> 'Client_cred' tipi '

Yukarıda da çalışır, söyledikten altında aşmak için tek bir yol olduğunu

Kullanıcı uygulamayı yetki sonra, biz geri bir oauth erişim belirteci için değiş tokuş edilebilir argüman kodunda bir doğrulama dize ile belirtilen yönlendirme URI kullanıcıyı yönlendirmek. Alma yoluyla bir erişim belirteci için alışverişi https://graph.facebook.com/oauth/access_token. Bir önceki aşamada olduğu gibi exact aynı redirect_uri Pass:

via: by: http://developers.facebook.com/docs/api see also: http://forum.developers.facebook.net/viewtopic.php?pid=238371

type olmadan API, yani takip ama (biz bunu gerek yok olsa bile) redirect_uri ve code eklemeyi deneyin:

$token = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id=<app_id>&client_secret=<app secret>&redirect_uri=<url>&code=<code>');

Belki sorun çözüldü ama henüz kabul cevabını bulamadık sizden ve belki de bu cevap benzer bir sorunla karşı karşıya olanlara yardımcı olur

Öncelikle bizim Uygulama örneği oluşturma var.

$facebook = new Facebook(array(
  'appId' => '149865361795547',
  'secret' => 'ee827a8df6202e1857b3fc28f3185a61',
  'cookie' => true,
)); 

almak kolay bir yol access_token

$token = $facebook->getAccessToken();

Senin soru sormak gibi sayfa durum olsun

$response = $facebook->api($pageID . '/feed','get',$token);

thanks..

Emin url sorgu parametreleri kodlanmış olduğundan emin olun, sizin bir gerçek olmalıdır:

000000000000%7CAaaAaaAaaAAaAaaaaAaaAa0aaAA

Not: Ayrıca, tipi parametresi ayrıca mesaj ile 500 hatası alıyorum olmadan, gerekli gibi görünüyor:

{
   "error": {
   "type": "OAuthException",
   "message": "Error validating verification code."
   }
}

yerine diğer eksik parametreler ile almak mesajın daha. the documentation sözü olduğunu göremiyorum.

Lütfen bağlantı URL yönlendirme URI bir üs değil ise de bu hatayı alabilirsiniz. Örneğin

Connect URL: http://www.example.com/fb/connect/

Redirect URI: http://www.example.com/fb/connect/redirect

Benim yönlendirme URI bağlantı URL olarak aynı olan bir sorunu koştu, ama ben yönlendirme URI üzerinde / sondaki unuttum yüzden FB bunları farklı gördüm ve doğrulama başarısız.

Sorry for posting in old question. Due to changes in recent fb access. I have this code working and thought I would post for anyone else requiring help. This method works great with jQuery ajax and eliminates the redirect_uri given example from facebook.

$ch = curl_init("https://graph.facebook.com/oauth/access_token?client_id=INSERT_YOUR_APP_ID_HERE&client_secret=INSERT_YOUR_APP_SECRET_HERE&grant_type=client_credentials");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30000);
$data = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
curl_close($ch);

if ($curl_errno > 0) 
{
        echo "cURL Error ($curl_errno): $curl_error\n";
} 
else 
{
    echo $data;
}

outputs a public available access_token for showing to non facebook users. i.e a facebook page feed wall via graph api for websites. access_token=191648007534048|eVilnMh585rlQLZLvBAmqM6s-1g

Hey i tuval uygulamalar için Oauth 2.0 kimlik doğrulaması için yapılmış küçük bir öğretici kontrol.

http://kartiklad.com/oauth-2-0-and-graph-api-for-facebook-canvas-applications/

Bu yardımcı olur umarım