Facebook PHP-SDK na míru pro Nette – Kdyby/Facebook
- Filip Procházka
- Moderator | 4668
Zdravím,
Kdyby/Facebook je doplněk pro
Nette, který je založen na původním php-sdk, ovšem celé
jsem ho přepsal, protože něco tak odporného přece nebudeme používat
v našich krásných Nette aplikacích! Samozřejmostí je podpora stable
i dev Nette.
Rozšíření je klasicky na Githubu k vašim službám včetně dokumentace, nejlépe ho instalujte pomocí composeru. Chyby nebo nápady na vylepšení hlaste prosím na githubu
Instalace
Pokud chcete používat vývojové Nette, tak do composer.json
dáme následující
"require": {
"nette/nette": "@dev",
"kdyby/facebook": "@dev",
}
A pro stable Nette
"require": {
"nette/nette": "~2.0",
"kdyby/facebook": "~0.9",
}
Otázky směřujte sem
Další otázky prosím zakládejte jako samostatná témata na novém fóru help.kdyby.org. Díky!
Ukázka
Připravil jsem též nástřel Facebookové Canvas aplikace, kterou si můžete vyzkoušet zde
Pokud máte s tvorbou canvas aplikací větší zkušeností než já a máte nápad jak tohle vylepšit, pomůžete nejenom mně ale i sobě, když se o něj podělíte na githubu v issues.
- Honza Marek
- Člen | 1664
protože něco tak odporného přece nebudeme používat v našich krásných Nette aplikacích
<offtopic>
Kvízová otázka pro pamětníky: koho mi
připomíná tento styl vyjadřování? </offtopic>
- netman92
- Člen | 22
Zdravim, mam otazku…
Ked chcem zavolat nieco taketo v nejakej metode (napr renderClick() ) tak uz mi to nefunguje.
$this->facebook->api('/me')
Modelova situacia: Otvori sa FB app, clovek potvrdi opravnenia. Prejde 3 stranky (vzdy samostatne akcie renderNieco() ) a na poslednej chcem POSTOVAT na jeho FB stenu a to mi vzdy vrati hlasku
Kdyby\Facebook\FacebookApiException #2500
An active access token must be used to query information about the current user.
aj ked pridavam auth token do parametrov.
Co robim zle?
- Filip Procházka
- Moderator | 4668
- access token se předává sám
- „An active access token must be used to query information about the current user.“ znamená že nemáš přihlášeného uživatele. http://stackoverflow.com/…current-user
Tohle jsi četl? https://github.com/…/en/index.md
- netman92
- Člen | 22
Jasne cital.
Pozri: facebookava appka mi zavola pri starte metodu
HomepagePresenter:default().
Pokial robim nieco s v nej tak uzivatel je prihlasneny a ide to oka.
Problem je, ked uzivatel na tej stranke klikne niekam (presmerovanie cez metodu redirect URL) tak tam uz je uzivatel zrazu odhlaseny a nemozem nic robit.
Dokonca to niekedy robi take nieco, ze ked dam $this->facebook->getUser() tak mi vypise jeho ID, ale nemozem urobit api call
- Filip Procházka
- Moderator | 4668
Absolutně nechápu. Asi by bylo dobré, ujasnit si pojmy.
Bavíme se o canvasové app, nebo máš web který dělá api requesty?
A bez kódu toho presenteru se asi nikam nepohneme :)
- TomasHalasz
- Bronze Partner | 79
Ahoj,
zkouším použít Kdyby\Facebook a narazil jsem na dvě věci, které v návodu a balíčku chyběly.
- nejdřív chyběl CertificateHelper.php , takže jsem ho stáhnul z https://github.com/…CurlCaBundle a dal do složky Kdyby\Facebook\Api\
- pak přihlašování stále nešlo $fb->getUser() vracelo 0 . V facebook log jsem našel:
` Invalid or no certificate authority found, using bundled information`
Google poradil že by v kódu mělo být toto:
Facebook::$CURL_OPTS[CURLOPT_CAINFO] = getcwd().'/fb_ca_chain_bundle.crt';
Vzal jsem tedy fb_ca_chain_bundle.crt z oficiálního PHP SDK, nakopíroval do Kdyby\Facebook\Api\ a v CurlClient.php upravil:
public static $defaultCurlOptions = array(
....
....
CURLOPT_CAINFO => 'fb_ca_chain_bundle.crt'
);
Ověřování teď funguje, $fb->getUser() vrací uživatele :-)
Otázka je jestli to takto mám správně.
Udělal bych ty změny a poslal je na GitHub, ale nevím jak na to tak to zatím
píšu jen sem…
- Filip Procházka
- Moderator | 4668
Nemáš to správně, buďto si nainstaluj balíček přes composer, nebo stáhni celý Kdyby/CurlCaBundle, nikoliv jen jeden soubor.
- TomasHalasz
- Bronze Partner | 79
aha, ok provedu. Já ten composer zatím moc nepoužívám, měl jsem strach ať mi něco „nezmrší“, ale to se asi stát nemůže co?
- Filip Procházka
- Moderator | 4668
Nejlepší je instalovat vše přes composer, stáhne ti i Nette a bude ti hlídat verze.
- saimons
- Člen | 293
Ahoj mohl by jste mi prosim nekdo poradit jakym zpusobem v modelu pracovat s timto doplnkem. Chtel bych po registraci uzivatel na jeho zed odeslat nake informace. Jde mi hlavne o to jak to cele zprovoznit. Predevsim jak nastavim spravne tridu Facebook, predat ji facebookID a accessToken a pak zavolat api() s potrebnymi informacemi. Na ofic. SDK jsem si to precetl jak se s tim pracuje, ale tady u toho doplnku si nevim rady. Predem dekuji.
- saimons
- Člen | 293
To jsem se dival, to co tam je mi funguje bez problemu, ale neni tam popsane jak nastavit to co jsem popsal. Konkretne nerozumim moc tomu co dela toto:
<?php
$dialog = $this->facebook->createDialog('login');
/** @var LoginDialog $dialog */
$dialog->onResponse[] = function (LoginDialog $dialog) {
$fb = $dialog->getFacebook();
...
?>
Protoze po tomto je v promene $fb uz uzivatel. Ale pokud ho chci zalogovat rucne a treba offline tak to nevim jak presne udelat.
- saimons
- Člen | 293
Myslel jsem toto, uz mi to asi funguje:
<?php
$this->facebook->setAccessToken('...');
$facebookID = ...;
$post = array(
'message' => 'Hello World..!'
);
try {
$this->facebook->api('/' . $facebookID . '/feed', 'POST', $post);
} catch (FacebookApiException $e) {
Debugger::log($e, 'facebook');
$this->flashMessage("Sorry.");
}
?>
Pokud si zazadam o privilegia, tak muzu posilat lidem na zed, ikdyz jsou offline.
Editoval saimons (30. 5. 2014 11:41)
- Filip Procházka
- Moderator | 4668
Další otázky prosím zakládejte jako samostatná témata na novém fóru help.kdyby.org. Díky!