PHP: Daten von api.xing.com abrufen
Seit letztem Jahr bietet Xing eine API an, mit der man Daten zum Beispiel seines eigenen Profils abrufen kann.
Hierbei verwendet Xing zur Authentifizierung das OAuth-Protokoll in Version 1.
Um die API nutzen zu können wird ein Account im Xing Developer Bereich benötigt, sowie ein Consumer Key und ein Token.
Der Developer-Account kann mit dem eigenen Profilaccount „freigeschalten“ werden; der Consumer Key (Test) kann über das Webinterface von dev.xing.com erstellt werden. Um daraufhin an den für den Abruf der Xing-Daten benötigten Access-Token zu kommen, empfiehlt es sich, das von Xing bereitgestellte Test-Script (in ruby geschrieben) auf https://dev.xing.com/docs/examples zu verwenden.
Hier ein Beispiel des Testscripts unter Ubuntu 12.04.3 LTS:
apt-get install ruby1.9.1 apt-get install liboauth-ruby1.9.1 git clone https://github.com/xing/xing-api-samples/ cd xing-api-samples/ruby/ git clone https://github.com/xing/xing_api.git RUBYLIB=xing_api/lib ruby1.9.1 cli.rb
Nach dem Aufruf von „cli.rb“ erfolgt folgende Ausgabe mit Eingabeaufforderungen:
Please open the following URL in your browser: https://dev.xing.com/applications and enter the consumer key: (mein consumer key) enter the consumer secret here: (mein consumer secret) Starting oauth handshake, ask for request token... Please open the following URL in your browser: https://api.xing.com/v1/authorize?oauth_token=(mein_oauth_token) and enter the PIN here: (meine PIN) Exchanging request token for your access token... Handshake complete. You should remember the following credentials, which you will need for further requests: access token: (mein access token) access token secret: (mein access token secret) You are: {:id=>"8435895_4589b8", :display_name=>"Roland Julian Hofmann", :gender=>"m"} and your amount of contacts is: 76
Somit erhält man den Accesstoken und das dazugehörige Kennwort.
Um jetzt mit PHP auf die API von Xing zugreifen zu können, bietet es sich an, das PECL-Paket „oauth“ zu installieren. Auch sollte PHP JSON unterstützen können.
Unter gentoo Linux reicht es, folgenden Befehl auszuführen, um OAuth zu installieren:
![]() |
PHP_TARGETS=“php5-3″ emerge -q dev-php/pecl-oauth |
Natürlich sollte nicht vergessen werden, die Erweiterung zu aktivieren.
Je nach Implementierung kann das unterschiedlich sein, im meinem Fall muss dies für PHP5.3 CGI geschehen.
![]() |
if [ ! -L ‚/etc/php/cgi-php5.3/ext-active/oauth.ini‘ ]; then ln -s /etc/php/cgi-php5.3/ext/oauth.ini /etc/php/cgi-php5.3/ext-active/oauth.ini; fi |
Eventuell muss Apache neu gestartet werden (wenn PHP als Modul eingebunden ist).
Danach ist es recht einfach, die Daten von xing.com im eigenen PHP-Skript abzufragen.
Hierzu dieser kleine Code-Ausschnitt:
<?PHP /* * kleines Beispiel, um Daten von Xing zu erhalten (JSON) */ try { /* erstelle OAuth mit den Daten des Consumer Keys */ $oauth = new OAuth('consumer key', 'consumer secret', OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_AUTHORIZATION); $oauth->enableDebug(); /* setze den Token */ $oauth->setToken('access token', 'access token secret'); /* stelle Abfrage an die API, siehe auch https://dev.xing.com/docs/resources */ $oauth->fetch('https://api.xing.com/v1/users/me'); $response_info = $oauth->getLastResponseInfo(); /* ueber getLastResponse() erhaelt man ein Objekt mit den Daten von xing */ $my_user_data = json_decode($oauth->getLastResponse()); $my_user_data = $my_user_data->users[0]; $oauth->fetch('https://api.xing.com/v1/users/me/visits'); /* $response_info = $oauth->getLastResponseInfo(); */ $my_visitor_data = json_decode($oauth->getLastResponse()); $oauth->fetch('https://api.xing.com/v1/users/me/contact_ids'); $response_info = $oauth->getLastResponseInfo(); $my_contact_data = json_decode($oauth->getLastResponse()); } catch(OAuthException $e) { echo 'XING API Error Message: "'.$e->getMessage().'"'; } ?>
Der Zugriff auf die Objekt-Daten gestaltet sich wie gewohnt:
<?PHP /* gibt die Daten der Qualifikationen aus */ foreach ($my_user_data->educational_background->qualifications as $qualification) { $arr_quali = preg_split('/:/', $qualification); print $arr_quali[0].': <strong>'.$arr_quali[1].'</strong>'; } ?>
Um herauszufinden, wie die Struktur der Daten ist, hilft zum Beispiel ein „print_r($my_user_data);“.