Facebook, Api, JS, Unit Testing

Schaue mir gerade die Facebook JS Api an.

Die Komponente heißt „connect-js“ und ist unter http://github.com/facebook/connect-js zu finden.

Das ganze wird per git „heruntergeklont“:

git-clone http://github.com/facebook/connect-js.git

(Ich hatte auch eine Java-API erwartet. Es gibt aber „nur“ Python, JS, Android u.a. .)

Sehr interessant / neu für mich sind die JS Unittests.

Nach einem Login auf FB kann man Nutzerdaten mit einer Art SQL abfragen:

FB.api(

{

method: ‚fql.query‘,

query: ‚SELECT name, pic FROM profile WHERE id=‘ + FB.getSession().uid

},

Man muß sich unter facebook.com/developers einen eigenen API-Key besorgen und diesen in den Beispielen eintragen.

Als erstes muß man 2 Aufrufe für die Initialisierung ausführen:

FB.init({appId: ‚140440852659125‘, status: true, cookie: true,
xfbml: false});

und

FB.getLoginStatus(handleLoginStatusResponse);

Die Callback Methode wurde bei mir nie aufgerufen. Weiß nicht warum. Da kann man dann den Status loggen und bei Erfolg weitere Aktionen machen.

Nun zu den Aktionen die man mi der API ausführen kann:

FB.share()

öffnet ein Popup um die aufrufende Seite als Link zu posten.

Etwas mehr Code hier:

var post = {
message: ‚This is some text‘,
action_links: [
{ text:’custom action link‘, href:’http://github.com/facebook/connect-js‘}
],
user_message_prompt: ‚Tell the world about Popups?‘
};
FB.publish(post, function(published_post) {
statusUpdate(
’sans-session-info‘,
‚post was ‚ + (published_post ? “ : ’not ‚) + ‚published.‘,
published_post
);
});

Ähnlich wie der Aufruf oben drüber.

Nun wollte ich direkt ohne Popup posten. Quasi direkt in FB rein. Das ging nicht, da meine FB-App nicht korrekt eingerichtet war. Ich müsste jetzt einen Server aufsetzen, den FB aufrufen und einbinden kann. Ich bekomme Fehlermeldungen, daß meine eingestellte URL ungültig ist. Vermutlich, weil es eine ausgedachte / Dummy-URL ist, hinter der keine richtige FB-App läuft. Dazu müsste man eine tar.gz von FB runterladen und es auf einem PHP fähigen Webserver aufspielen. Dazu habe ich jetzt keine Lust und keine Zeit mehr.

Hier noch schnell der Code von dem ich annehme, daß er direkt postet; ohne Popup:

var body = ‚Reading Connect JS documentation‘;
FB.api(‚/me/feed‘, ‚post‘, { body: body }, function(response) {
if (!response || response.error) {
log(‚Error occured … ‚ + response.error.type + ‚ … ‚ + response.error.message);
} else {
log(‚Post ID: ‚ + response);
}
});

Ggf. muß man vorher noch ein Login aufrufen:

FB.login(function(response) {
if (response.session) {
if (response.perms) {
log(‚user is logged in and granted some permissions.‘);
// perms is a comma separated list of granted permissions

} else {
log(‚user is logged in, but did not grant any permissions‘);
log(‚Error occured … ‚ + response.error.type + ‚ … ‚ + response.error.message);
}
} else {
log(‚user is not logged in‘);
}
}, {perms:’publish_stream‘});

Man beachte das Array mit den benötigten Berechtigungen. Die prüft FB nach Login und fragt ggf. den Nutzer nach Erlaubnis für meine App.

Soviel für den Moment …

PS: Jetzt habe ich mir gar nicht die JS-Unittests angeschaut. Kommt noch …

Advertisements
Dieser Beitrag wurde unter Uncategorized veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s