Guten Morgen,
ich war die letzten Tage damit beschäftigt eine Klasse zu schreiben um sich mit OAuth bei xREL zu authentifizieren und diese ist nun seit 1 – 2 Tage soweit fertig. An dieser Klasse wird natürlich immer weiterentwickelt aber das sind ab jetzt nur Verbesserungen da die Klasse tut was sie tun soll.
Nun komme ich aber mal zum eigentlichen, ich will die Klasse namens „xRELOAuth“ einmal kurz vorstellen und habe auch eine kleine Extra Klasse dazugelegt die das verwenden der API Funktionen kinderleicht macht da man eigentlich nichts mehr selber machen muss nachdem man sich bei xREL authentifiziert hat. Ich werde also kurz erklären wie man die Klasse verwendet, das heißt wie man die Authentifizierung richtig „einrichtet“ (Authentifizieren & überprüfen ob alles geklappt hat) und dann die API Funktionen aufrufen kann. Dann lege ich mal los…
Die erste Klasse ist die wichtigste klasse, nämlich die „xRELOAuth.class.php“ die jeder Frei verwenden kann um sie in eigenen Projekten zu verwenden.
Schritt 1: Die eigenen xREL OAuth Daten eintragen (Consumer Key & Secret)
Zuerst müsst ihr eure eigenen Daten eintragen, diese findet ihr unter „Benutzereinstellungen -> Apps entwickeln -> Eine App (Show OAuth Data)“. Wer noch keine App erstellt hat sollte das tuen falls er diese Klasse verwenden möchte
Habt ihr „Show OAuth Data“ angeklickt kommt ihr zu einer Seite wo eure OAuth Daten stehen, ihr kopiert den Consumer Key & das Secret und fügt es in die „xREL.class.php“ an diesen stellen ein…
Habt ihr das getan könnt ihr die “xREL.class.php” schließen da ihr alle benötigten Informationen eingetragen habt.
Schritt 2: Die Klasse einbinden (index & authorize.php)
Der nächste Schritt ist die Klasse einzubinden, das machen wir mit dem folgenden Code.
# xREL Class
require_once('lib/xREL.class.php');
Schritt 3: Die Autorisierung einrichten (index.php)
Haben wir die Klasse eingebunden können wir anfangen die Autorisierung einzurichten damit wir auf die API Funktionen von xREL zugreifen können, dafür verwenden wir diesen Code.
# Session starten
session_start();
# xRELOAuth Objekt erzeugen
$objAuth = new xRELOauth(xREL::CONSUMER_KEY, xREL::CONSUMER_SECRET);
# Request Token/Secret anfragen
$arrResult = $objAuth -> getRequestToken(xREL::CALLBACK_URL . '/authorize.php');
# Request Token/Secret speichern
$_SESSION['oauth_token'] = $arrResult['oauth_token'];
$_SESSION['oauth_token_secret'] = $arrResult['oauth_token_secret'];
# Überprüfen ob alles OK ist
if($objAuth -> getLastStatus() === 200){
$strResult = $objAuth -> getAuthorizeURL($arrResult['oauth_token']);
header('Location: '. $strResult);
} else {
die('Oops, something wrong happened.');
}
Dieser Code erzeugt ein „xRELOAuth“ Objekt und leitet euch dann auf die xREL.to Autorisierungsseite weiter, habt ihr den Zugriff für die Anwendung erlaubt werdet ihr zu „http://your-domain.com/authorize.php“ weitergeleitet wo überprüft wird ob alle Daten vorhanden sind und wenn ja die Funktionen verwendet werden können.
Schritt 4: Die Autorisierung überprüfen und einen Access Token erstellen
Nun kommt eigentlich schon der letzte Teil der aber auch nicht schwerer als die anderen ist. Zuerst mal der Code…
if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){
# xRELOAuth Objekt erzeugen
$objAuth = new xRELOAuth(xREL::CONSUMER_KEY, xREL::CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
# Access-Token erstellen und speichern
$arrResult = $objAuth -> getAccessToken($_GET['oauth_verifier']);
$_SESSION['access_token'] = $arrResult;
# xREL Objekt erzeugen
$objXrel = new xREL($objAuth);
# Hier kommen die Funktionsaufrufe hin... (Beispielscript anschauen)
} else {
header('Location: index.php');
}
Dieser Code überprüft ob die Daten die benötigt werden auch vorhanden sind (Also ob die Autorisierung erfolgreich war), wenn das der Fall ist wird ein Access Token erzeugt um den Aufruf einer API Funktion zu „unterschreiben“. Nach dem Erstellen des Access Tokens wird ein Objekt der „xREL.class.php“ erzeugt in der sich die API Funktionen befinden, danach kann man die Funktionen aufrufen und das werden wir nun auch mal tuen.
Ist die Autorisierung fehlgeschlagen wird auf die index.php zurückgeleitet.
Schritt 5: API Funktionen verwenden (authorize.php)
Wenn wir nun z. B. die Funktion „$objXrel -> getAuthdUser()“ aufrufen und alles geklappt hat sollte die Rückgabe so aussehen (Für mich)
Extra: Download meines Projektes
Um den kompletten Code zu sehen solltet ihr euch das ganze Projekt runterladen da es einfach zuviel wäre es alles in diesem Thread zu posten http://cl.ly/3D3K3g1e2S3o1Q0e1x3C
Bei Fragen, Ideen oder Sonstigem einfach posten…
P. S. Ich hoffe alles ist leserlich, der Content von xREL ist ja nicht sonderlich breit 12 mal bearbeitet, zuletzt 9. Jan. 2011, 17:29 Uhr
Da CloudApp gerade anscheinend einige Problem hat habe ich das Script nochmal hier hochgeladen
ENTFERNT - NEUE VERSION UNTEN
Diese Version ist schon ein wenig verändert (Exceptions, xRELOAuth.class.php komplett neu kommentiert, einige kleinigkeiten)
-----
CloudApp geht wieder, hier ist nochmal eine neuere Version mit folgenden Änderungen
- xREL.class.php neu kommentiert
- xRELOAuth.class.php neu kommentiert
- Ausnahmen und deren Behandlung eingefügt (getRequestToken, getAccessToken)
- Unnötige Variablen entfernt
- Einige Funktionen ein wenig erneuert
ENTFERNT - NEUE VERSION UNTEN
-----
So ein weiteres kleines Update
- Eigene kleine Exception Klasse hinzugefügt (xRELException.class.php)
- Code ein wenig überarbeitet (sieht man nicht wirklich )
- "Exception" durch "xRELException" ersetzt
Die Fehlermeldung sieht nun so aus Error:The token is invalid, or has expired.
ENTFERNT - NEUE VERSION UNTEN
-----
Und ein weiteres Update
- formatJson Funktion ausgetauscht (Danke @Doakes)
- Vergessene "new Exception" durch "new xRELException" ersetzt
- DELETE Methode hinzugefügt (aktuell nocht ohne nutzen)
Wenn jemand also einen Fehler sieht kann er ihn da ja eintragen, dann werde ich ihn schnellst möglichst fixxen. 8 mal bearbeitet, zuletzt 10. Dez. 2010, 14:16 Uhr
Ich werde in denn nächsten Tagen vielleicht eine neuere Version hochladen in der es nun eine Konfigurationsdatei gibt in der alle Angaben gemacht werden anstatt die angaben in jeder Klasse zu machen.
Auf das Google Repo habe ich aktuell keinen Zugriff da mein Account irgendwie spinnt
P. S. Hat schon einmal jemanden damit etwas gemacht bzw. versucht?
(bei mir ging das entpacken direkt aufm Server mitm 7z-tool auch schief. Auf meinem Laptop hats aber komischerweiße geklappt. Keine Ahnung woran das liegt)
Also Hobbyprogrammierer sollte man mindestens sein - Ansonsten wüsste ich eh nicht, was man sonst mit Anfangen sollte. API ist doch nur für die interessant. Ansonsten, genauere Erklärung liefert Wikipedia (oder Google, ich glaub am Beispiel der Twitter-OAuth-API wird das ganze sehr ausführlich erklärt (englisch))
(bei mir ging das entpacken direkt aufm Server mitm 7z-tool auch schief. Auf meinem Laptop hats aber komischerweiße geklappt. Keine Ahnung woran das liegt)
Hab ein Problem mit der Favoriten Liste, beim Aufruf von $resp = $xrel -> favs(); kommt einfach nix zurück. Genauso bei authd_user(); , andere Funktionen wie latest_releases(); funtionieren ohne Probleme.
Bekam auch keinen Fehler angezeigt.
Ich hoffe man kann mir helfen
Habe es gerade getestet und du hast recht. Werde mir das nachher mal anschauen.
# Edit
Werd nachher mal im IRC nachfragen da sich an meinem Code nichts geändert hat, nun aber eine andere Response zurückkommt mit einem Fehler als sonst. 1 mal bearbeitet, zuletzt 6. Jan. 2012, 14:05 Uhr
Bekomme bei folgenden Abfragen nichts zurück
$resp = $xrel -> authd_user();
$resp = $xrel -> rate_limit_status();
$resp = $xrel -> favs();
Bei $resp = $xrel -> favs_entry(5170); kommt volgende Fehlermeldung.
Warning: Invalid argument supplied for foreach() in .......\xREL.class.php on line 175
Bei den folgenden Methoden kommt es momentan zu einer Fehlerhaften rückgabe authd_user (Fixed, Update kommt morgen) rate_limit_status (Fixed, Update kommt morgen) favs (Fixed, Update kommt morgen)
favs_entry (Fehler wird noch gesucht)
Der Fehler ist immer "You cannot specify the "oauth_consumer_key" parameter multiple times.", werde aber versuchen es so schnell wie möglich zu lösen. 5 mal bearbeitet, zuletzt 8. Jan. 2012, 07:11 Uhr
Ich finde den Fehler der "favs_entry"-methode momentan nicht da die Rückgabe "Invalid signature." lautet aber die selben Daten wie bei allen anderen Methoden gesendet werden und dort gültig sind.
Kann momentan aber auch leider nur mobil nachschauen und nicht richtig daran arbeiten. 1 mal bearbeitet, zuletzt 8. Jan. 2012, 07:13 Uhr
ich war die letzten Tage damit beschäftigt eine Klasse zu schreiben um sich mit OAuth bei xREL zu authentifizieren und diese ist nun seit 1 – 2 Tage soweit fertig. An dieser Klasse wird natürlich immer weiterentwickelt aber das sind ab jetzt nur Verbesserungen da die Klasse tut was sie tun soll.
Nun komme ich aber mal zum eigentlichen, ich will die Klasse namens „xRELOAuth“ einmal kurz vorstellen und habe auch eine kleine Extra Klasse dazugelegt die das verwenden der API Funktionen kinderleicht macht da man eigentlich nichts mehr selber machen muss nachdem man sich bei xREL authentifiziert hat. Ich werde also kurz erklären wie man die Klasse verwendet, das heißt wie man die Authentifizierung richtig „einrichtet“ (Authentifizieren & überprüfen ob alles geklappt hat) und dann die API Funktionen aufrufen kann. Dann lege ich mal los…
Die erste Klasse ist die wichtigste klasse, nämlich die „xRELOAuth.class.php“ die jeder Frei verwenden kann um sie in eigenen Projekten zu verwenden.
Schritt 1: Die eigenen xREL OAuth Daten eintragen (Consumer Key & Secret)
Zuerst müsst ihr eure eigenen Daten eintragen, diese findet ihr unter „Benutzereinstellungen -> Apps entwickeln -> Eine App (Show OAuth Data)“. Wer noch keine App erstellt hat sollte das tuen falls er diese Klasse verwenden möchte
Habt ihr „Show OAuth Data“ angeklickt kommt ihr zu einer Seite wo eure OAuth Daten stehen, ihr kopiert den Consumer Key & das Secret und fügt es in die „xREL.class.php“ an diesen stellen ein…
Habt ihr das getan könnt ihr die “xREL.class.php” schließen da ihr alle benötigten Informationen eingetragen habt.
Schritt 2: Die Klasse einbinden (index & authorize.php)
Der nächste Schritt ist die Klasse einzubinden, das machen wir mit dem folgenden Code.
Schritt 3: Die Autorisierung einrichten (index.php)
Haben wir die Klasse eingebunden können wir anfangen die Autorisierung einzurichten damit wir auf die API Funktionen von xREL zugreifen können, dafür verwenden wir diesen Code.
Dieser Code erzeugt ein „xRELOAuth“ Objekt und leitet euch dann auf die xREL.to Autorisierungsseite weiter, habt ihr den Zugriff für die Anwendung erlaubt werdet ihr zu „http://your-domain.com/authorize.php“ weitergeleitet wo überprüft wird ob alle Daten vorhanden sind und wenn ja die Funktionen verwendet werden können.
Schritt 4: Die Autorisierung überprüfen und einen Access Token erstellen
Nun kommt eigentlich schon der letzte Teil der aber auch nicht schwerer als die anderen ist. Zuerst mal der Code…
Dieser Code überprüft ob die Daten die benötigt werden auch vorhanden sind (Also ob die Autorisierung erfolgreich war), wenn das der Fall ist wird ein Access Token erzeugt um den Aufruf einer API Funktion zu „unterschreiben“. Nach dem Erstellen des Access Tokens wird ein Objekt der „xREL.class.php“ erzeugt in der sich die API Funktionen befinden, danach kann man die Funktionen aufrufen und das werden wir nun auch mal tuen.
Ist die Autorisierung fehlgeschlagen wird auf die index.php zurückgeleitet.
Schritt 5: API Funktionen verwenden (authorize.php)
Wenn wir nun z. B. die Funktion „$objXrel -> getAuthdUser()“ aufrufen und alles geklappt hat sollte die Rückgabe so aussehen (Für mich)
Extra: Download meines Projektes
Um den kompletten Code zu sehen solltet ihr euch das ganze Projekt runterladen da es einfach zuviel wäre es alles in diesem Thread zu posten
http://cl.ly/3D3K3g1e2S3o1Q0e1x3C
Bei Fragen, Ideen oder Sonstigem einfach posten…
P. S. Ich hoffe alles ist leserlich, der Content von xREL ist ja nicht sonderlich breit
12 mal bearbeitet, zuletzt 9. Jan. 2011, 17:29 Uhr
#