S PHP SDK 5.0 je práce s Facebook API mnohem jednodušší. I ve větvi 4.0 se však udály dobré věci. Syntax příkladů v tomto příspěvku je pro verzi 4.0 SDK.
Nechcete-li instalovat Composer pro několik věcí, které děláte s PHP, můžete si SDK stáhnout ručně.
Přístupové tokeny
Přístupový token je v podstatě velmi dlouhé ID, které je nutné pro volání Graph API. Obsahuje také informace o čase v sekundách, do kdy platnost přístupového tokenu vyprší, a někdy obsahuje identifikátor nazývaný machine_id, který identifikuje počítač, který požádal o přístupový token. Oficiální dokumentace uvádí, že platnost tokenu vyprší "za hodinu nebo dvě". Tato krátká doba může být problematická, pokud plánujete ukládat přístupový token do databáze a později ho používat k volání Graph API.
Existuje několik různých přístupových tokenů, které lze použít pro interakci s Graph API. Ale ne všechny přístupové tokeny jsou stejné. Pravděpodobně nejznámější a nejpoužívanější přístupový token je uživatelský přístupový token.
Typy přístupových tokenů
- Uživatelský přístupový token: Nejznámější a nejpoužívanější.
- Stránkový přístupový token: Vypadá stejně jako uživatelský přístupový token. Identifikuje také ID cílové stránky. Stránkové přístupové tokeny, které jsou vráceny z /me/accounts, ve výchozím nastavení vyprší, pokud jste je získali pomocí krátkodobého uživatelského přístupového tokenu.
- Aplikační přístupový token: Token je tvořen ID aplikace a jejím tajemstvím nebo platným hash. Aplikační přístupové tokeny nevyprší.
Graph API má užitečný endpoint /debug_token, který můžete použít k získání informací o přístupovém tokenu.
Čtěte také: Použití PHP Web SDK pro zprávy z Facebook stránky
Prodloužení platnosti uživatelského tokenu
V mnoha scénářích byste chtěli prodloužit uživatelský token a s PHP SDK je to docela snadné.
Pokud vaše aplikace často posílá požadavky s dlouhodobým přístupovým tokenem do Graph API jménem vašich uživatelů, vaše aplikace je vystavena riziku označení za spam.
Inicializace SDK a práce s tokeny
Nejprve inicializujeme SDK s přístupovým tokenem - pokud není token nastaven, vrátíme se k aplikačnímu přístupovému tokenu. Poté se pokusíme provést požadavek na endpoint /me. Pokud to projde, zobrazíme jméno uživatele.
Tento skript pouze uloží přístupový token a přesměruje na login.php. Můžeme použít aplikační přístupový token jako výchozí, protože pokud se uživatel dostane k tomuto skriptu, s největší pravděpodobností nebude mít aktivní token.
Pro čtení příspěvků z časové osy uživatele je vyžadováno oprávnění user_posts. Pro každé vybrané oprávnění musíme nahrát další podrobnosti s video snímkem k recenzi.
Vyberte svou aplikaci ve vývoji a přejděte na Role -> Testovací uživatelé a klikněte na tlačítko Upravit -> Změnit oprávnění, která tento uživatel udělil aplikaci. Tato funkce API vrátí objektové pole s kódovanými daty příspěvků. Pomocí funkce getDecodedBody() se výsledek dat příspěvků dekóduje.
Práce s oprávněními (Extended Parameters)
Rozšířená oprávnění jsou zajímavým způsobem, jak omezit přístup k aplikaci (používám termín aplikace pro to, co zde stavíme) prostřednictvím API. Pokud uživatel nepovolí přístup k určitým částem svého účtu, aplikace nebude moci upravovat ani číst části účtu, i když je ověřena.
Rozšířená oprávnění musí být explicitně přiřazena v okamžiku ověření.
První na snímku obrazovky je výchozí požadované oprávnění pro přístup ke všem základním informacím uživatelů. Další tři potřebujeme k dosažení našich cílů, včetně: čtení a zveřejňování stavových aktualizací, stejně jako prohlížení a zveřejňování fotografií.
Zde si můžete prohlédnout úplný seznam všech dostupných rozšířených oprávnění. Pokud přejdete na tento odkaz, uvidíte, že existuje mnoho oprávnění. Doporučuji věnovat nějaký čas čtení jejich popisů, abyste lépe porozuměli druhům věcí, které můžete s API dělat.
Příklad konfigurace a získání oprávnění
Níže je kód pro soubor config.php. Dovolte mi rychlé vysvětlení kódu.
Dále voláme getUser(), abychom zjistili, zda jsme již ověřeni - null znamená, že nejsme, jinak obdržíme ID uživatele. URL nám poskytuje metoda getLoginUrl. Této metodě posíláme pole s klíčem req_perms (požadovaná oprávnění) a hodnota je čárkami oddělený seznam všech rozšířených oprávnění, ke kterým chceme mít přístup.
Zkuste přistupovat k této stránce ve svém prohlížeči. Dále uvidíte stránku 'Žádost o oprávnění', klikněte na povolit a budete přesměrováni zpět na stránku config.php na vašem serveru. Tento proces vás vrátí na stránku, která iniciovala ověření, což byla stránka config.php.
Při testování vaší aplikace se můžete rozhodnout, že potřebujete více nebo méně rozšířených oprávnění. V sekci "aplikace, které používáte" byste měli vidět svou aplikaci, klikněte na "upravit nastavení". Nakonec klikněte na tlačítko 'x' pro smazání vaší aplikace ze seznamu.
Interakce s Graph API objekty a spojeními
Graph API umožňuje volat různé zdroje, z nichž všechny budou vráceny jako JSON objekty. Budete muset strávit nějaký čas na referenční stránce Graph API, abyste pochopili různé dostupné objekty, jejich parametry a jaká jsou požadovaná rozšířená oprávnění pro přístup k nim.
Objekt uživatele
Pojďme si nejprve promluvit o objektu uživatele. Pokud se podíváte na referenční stránku pro uživatele, uvidíte, že pro volání uživatelského objektu (uživatele, který je ověřen aplikací) byste volali URL Graph API s '/me' na konci. Pokud je volání úspěšné, obdržíte JSON objekt se všemi možnými vlastnostmi definovanými na referenční stránce (pokud jsou nastaveny). Jakmile máte objekt, můžete přistupovat k jeho vlastnostem nebo s ním dělat, co potřebujete.
Spojení (Connections)
Nyní se pokusím vysvětlit spojení. Pokud se znovu podíváte na referenční stránku uživatele a posunete se dolů, uvidíte sekci spojení. To jsou objekty, které můžete získat a které patří tomuto uživateli. Pro přístup k těmto objektům byste volali URL /me/objekt, který chcete. Například, pokud chcete získat alba tohoto uživatele, volali byste /me/albums a to by vrátilo pole objektů alb, ale nezapomeňte splnit požadované oprávnění.
Takže spojení je jen most mezi jedním objektem a druhým. Dalším příkladem by bylo, řekněme, že uděláme jako výše a získáme všechna uživatelská alba. Nyní chceme vidět všechny fotografie uvnitř každého alba. Pokud se podíváte na objekt alba, všimnete si, že pod spojeními jsou fotografie, které vracejí pole objektů fotografií.
Když přemýšlím o spojeních, myslím na joiny v databázi.
Čtení stavových zpráv
Nejprve zahrňte soubor config.php, který jsme vytvořili dříve (budete jej zahrnovat i na všechny ostatní stránky). Metoda api je to, co budeme používat vždy, když potřebujeme volat zdroj, a může přijímat tři parametry: zdroj, get/post (výchozí je get) a params (pokud existují). V tomto případě chceme volat spojení statuses v uživatelském objektu, které vrací pole stavových zpráv. Po obdržení zpráv procházíme každou z nich a vypisujeme je. Pokud chcete vidět všechny vlastnosti každého stavu, stačí provést var_dump na každý stav.
Publikování příspěvků
Chceme vytvořit nový příspěvek, takže se podívejme do referenčního průvodce pro informace o příspěvku a jeho vlastnostech. Přejděte dolů do sekce publikování a všimněte si, že potřebujeme rozšířenou vlastnost publish_stream a můžete vidět všechny různé vlastnosti, které tento objekt podporuje. To je veškerý kód potřebný k vytvoření příspěvku! Je to tak snadné. Voláme metodu api, řekneme jí, že chceme volat spojení /me/feed, nastavíme metodu na post a nakonec předáme pole s vlastnostmi, které chceme nastavit - v tomto případě pouze vlastnost message. Pokud je volání úspěšné, obdržíte zpět ID, což je ID nového příspěvku, který jste právě vytvořili.
Získání alb a fotografií
V tomto příkladu chceme získat všechna různá alba pro našeho uživatele. Zde voláme spojení albums na uživateli, abychom získali všechny objekty alb. Procházíme každým z nich a pro každé album získáme ID alba, abychom pak mohli volat spojení photo na objektu alba.
Nahrávání fotografií
V zájmu času a složitosti přidám fotografii, aniž bych specifikoval album. Tento příklad jsem vybral pro lidi, kteří chtějí pochopit, jak zveřejnit soubor prostřednictvím služby, jako je tato. Nejprve začněme nahoře. Musíme specifikovat cestu k obrázku, který chceme nahrát, takže změňte tuto cestu na místo, kde se soubor nachází. Obvykle by to byla dočasná cesta pro fotografii právě nahranou na váš server prostřednictvím $_FILE. Tento způsob jsem příliš nezkoumal, kromě komentářů, které říkaly, že je třeba specifikovat server, takže používám SERVER_NAME k označení tohoto serveru.
Dále provedeme volání. Voláme /me/photos, protože to je specifikováno na referenční stránce fotografií v sekci publikování. Předáváme dva parametry: message je text, který se zobrazí s obrázkem, a source je obrázek, který chceme nahrát. To proto, že chceme zveřejnit obsah souboru a nepředávat řetězec, kde se soubor nachází.
Začněte volat další objekty a hrajte si s různými rozšířenými oprávněními.
Klíče API a tajemství aplikace
Získejte API klíč a ID tajemství aplikace, které je vytvořeno pro vaši aplikaci. Jednoduše pojmenujte svůj web a zadejte URL vašeho webu a klikněte na vytvořit aplikaci. Dále budete vyzváni k zadání captcha a pokračování.
Domény aplikace
Základní hostname callback URL musí být definován v nastavení aplikace. Poté přejděte na záložku "Settings". Do pole "App Domains" zadejte všechny názvy hostitelů, které budete používat.
Další informace
- SDK Codegen: Naše SDK je automaticky generována z SDK Codegen.
- Testy: Složka 'test' obsahuje testovací případy. Všimněte si: v současné době nemůžeme bezpečně a spolehlivě spouštět integrační testy na veřejném CI systému.
