. .

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);“.


Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>