<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>SoWebDev-BLOG</title>
	<atom:link href="http://frank-it-beratung.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://frank-it-beratung.com</link>
	<description>Social-Media- &#38; Web-Entwicklung</description>
	<lastBuildDate>Wed, 01 Feb 2012 11:05:33 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='frank-it-beratung.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/d9f7f66a412ac4d15cb40e1bc458386c?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>SoWebDev-BLOG</title>
		<link>http://frank-it-beratung.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://frank-it-beratung.com/osd.xml" title="SoWebDev-BLOG" />
	<atom:link rel='hub' href='http://frank-it-beratung.com/?pushpress=hub'/>
		<item>
		<title>Tutorial: Google+ API mit PHP Bordmitteln nutzen (Teil 2)</title>
		<link>http://frank-it-beratung.com/2012/02/01/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-2/</link>
		<comments>http://frank-it-beratung.com/2012/02/01/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-2/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 09:24:28 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Google API]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[g+]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://frankitberatung.wordpress.com/?p=780</guid>
		<description><![CDATA[Wie bereits im 1. Teil dieses Tutorials zur Google+ API mit PHP bemerkt ist das Access-Token nur knapp eine Stunde gültig. Nach Ablauf dieser Zeit muss man mit Hilfe des Refresh-Tokens, der Client ID und des Client Secret (vgl. ebenfalls den 1. Teil des Tutorials) ein neues Access-Token generieren. Ich empfehle folgendes vorgehen: Einfach folgenden [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=780&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Wie bereits im <a title="Tutorial: Google+ API mit PHP Bordmitteln nutzen (Teil 1)" href="http://frank-it-beratung.com/2012/01/30/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-1/">1. Teil dieses Tutorials zur Google+ API mit PHP</a> bemerkt ist das Access-Token nur knapp eine Stunde gültig. Nach Ablauf dieser Zeit muss man mit Hilfe des Refresh-Tokens, der Client ID und des Client Secret (vgl. ebenfalls den <a title="Tutorial: Google+ API mit PHP Bordmitteln nutzen (Teil 1)" href="http://frank-it-beratung.com/2012/01/30/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-1/">1. Teil des Tutorials</a>) ein neues Access-Token generieren.</p>
<p>Ich empfehle folgendes vorgehen: Einfach folgenden Code mittels Cronjob etwa alle 55 Minuten ausführen. Dadurch wird ein neues Access-Token generiert und dieses in einer Datenbank oder (wie im folgenden Beispiel) in einer Textdatei abgelegt:</p>
<p><span id="more-780"></span></p>
<pre>&lt;?php

// Tutorial: GooglePlus via OAuth mit PHP Bordmitteln
// (Teil 2)  

echo "GooglePlus mit OAuth: Tutorial (Teil 2)";
echo "\n\n";

// OAuth Tokens
$refreshtoken = "???";
$clientid="???;
$clientsecret="???";

$APIurl = "https://accounts.google.com/o/oauth2/token";

$params="client_id=".$clientid;
$params.="&amp;client_secret=".$clientsecret;
$params.="&amp;refresh_token=".$refreshtoken;
$params.="&amp;grant_type=refresh_token";

// Der Request ist fertig und sieht so aus:
echo "\nRequest: $params\n\n";

// mit file_get_contents versenden
$opts = array('http' =&gt;
    array(
        'method'  =&gt; 'POST',
        'header'  =&gt; 'Content-type: application/x-www-form-urlencoded',
        'content' =&gt; $params
    )
);

$result = file_get_contents($APIurl, false, stream_context_create($opts));

//ggf. das Result ausgegeben
//echo "\nResult:\n" . $result;

//json decoden
$daten=json_decode($result);

//ausgeben und speichern
echo "neues Access-Token: ". $daten-&gt;access_token;
file_put_contents("accesstoken.txt", $daten-&gt;access_token);

echo "\n... das war's!\n";
?&gt;</pre>
<p>In dem Codebeispiel des <a title="Tutorial: Google+ API mit PHP Bordmitteln nutzen (Teil 1)" href="http://frank-it-beratung.com/2012/01/30/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-1/">1. Teils meines Tutorials</a> ist dann folgende Zeile zu ändern:</p>
<pre>// OAuth Token
$accesstoken = file_get_contents("accesstoken.txt");</pre>
<p>Ein eigentlich selbstverständlicher Hinweis: &#8222;acesstoken.txt&#8220; sollte natürlich an einem &#8222;sicheren&#8220; Ort abgespeichert werden.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/780/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/780/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/780/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=780&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2012/02/01/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>
	</item>
		<item>
		<title>Tutorial: Google+ API mit PHP Bordmitteln nutzen (Teil 1)</title>
		<link>http://frank-it-beratung.com/2012/01/30/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-1/</link>
		<comments>http://frank-it-beratung.com/2012/01/30/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-1/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 08:56:46 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Google API]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[g+]]></category>
		<category><![CDATA[g+ api]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=770</guid>
		<description><![CDATA[Wie angekündigt hier ein kurzes Tutorials, wie man die Google+ API mit PHP nutzt. Bei folgender Lösung handelt es sich wieder um eine &#8222;Single-User&#8220; Lösung, d.h. das Script kann nur von einem Google-Account genutzt werden. Ich habe dies beispielsweise verwendet, um in bestimmten Intervallen (cronjob) zu prüfen, ob ein bestimmter User einen neuen Post bei [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=770&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Wie angekündigt hier ein kurzes Tutorials, wie man die Google+ API mit PHP nutzt. Bei folgender Lösung handelt es sich wieder um eine &#8222;Single-User&#8220; Lösung, d.h. das Script kann nur von einem Google-Account genutzt werden. Ich habe dies beispielsweise verwendet, um in bestimmten Intervallen (cronjob) zu prüfen, ob ein bestimmter User einen neuen Post bei Google+ geschrieben hat. Dieser wurde dann automatisch auf Facebook veröffentlich (vgl. dazu meine Tutorials zur Facebook-API).</p>
<p>Zudem verwende ich hier in diesem Tutorial wieder nur &#8222;PHP-Bordmittel&#8220; &#8211; auch wenn es eine Vielzahl von SDKs und Tools gibt sind diese m.E. für kleinere Aufgaben wie diese meist nicht unbedingt notwendig &#8211; so geht&#8217;s eigentlich schneller.</p>
<p>Hier nun die Schritt-für-Schritt-Anleitung:</p>
<p><span id="more-770"></span></p>
<p>1. Zuerst muss die Applikation bei Google registriert werden (hierfür ist ein Google-Account erforderlich). Mit Googles API-Console (<a href="https://code.google.com/apis/console" target="_blank">https://code.google.com/apis/console</a>) muss ein neues Application „Project“ angelegt werden, der Name des Projekts spielt keine Rolle.</p>
<p>2. Unter „All Services“ ist dann „Google+“ zu aktivieren.</p>
<p>3. Unter „API Access“ klickt man auf „Create an OAuth 2.0 client id“</p>
<p><a href="http://frankitberatung.files.wordpress.com/2012/01/bild1.jpg"><img class="alignnone size-medium wp-image-772" title="Screenshot Tutorial" src="http://frankitberatung.files.wordpress.com/2012/01/bild1.jpg?w=300&#038;h=163" alt="" width="300" height="163" /></a></p>
<p>4. Hier muss ein „Product Name“ eingetragen werden, z. B. „MeinGooglePlusTool“.</p>
<p>5. Als nächstes wählt man „Installed application“.</p>
<p>6. Nun erhält man die Client ID, das Client Secret sowie die Redirect URL (dabei ist nur die erste Zeile wichtig „http://localhost“ gehört nicht dazu)</p>
<p><a href="http://frankitberatung.files.wordpress.com/2012/01/bild2.jpg"><img class="alignnone size-medium wp-image-773" title="Screenshot" src="http://frankitberatung.files.wordpress.com/2012/01/bild2.jpg?w=300&#038;h=104" alt="" width="300" height="104" /></a></p>
<p>7. Mit Hilfe dieser drei Werte kann man nun das Access-Token generieren. Ich empfehle hier mein open source Tool „<a title="Neue Version Access Token Manager – jetzt auch mit Google+ Unterstützung" href="http://frank-it-beratung.com/2011/10/14/neue-version-access-token-manager-jetzt-auch-mit-google-unterstutzung/" target="_blank">Access-Token-Manager</a>“ – alternativ kann man sich auch selbst etwas basteln, hier ist die Anleitung dazu bei Google: <a href="http://code.google.com/apis/accounts/docs/OAuth2InstalledApp.html" target="_blank">http://code.google.com/apis/accounts/docs/OAuth2InstalledApp.html</a></p>
<p>8. Nun hat man das Access Token (sowie das Refresh Token, da der Token nur  eine Stunde gültig ist; mehr dazu im <a title="Tutorial: Google+ API mit PHP Bordmitteln nutzen (Teil 2)" href="http://frankitberatung.wordpress.com/2012/02/01/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-2/">2. Teil meines Tutorials</a>).</p>
<p>9. Mit folgendem PHP-Code lässt sich nun auf Google+ zugreifen (mit den Berechtigungen des Benutzers, den man bei Punk 7 zum generieren des Access-Tokens verwendet hat). In meinem Beispiel werden die „activities“ (d.h. die eigenen Posts) ausgelesen:</p>
<pre>#!/usr/local/bin/php5

&lt;?php

// Tutorial: GooglePlus via OAuth mit PHP Bordmitteln

echo "GooglePlus mit OAuth: Tutorial (Teil 1)";
echo "\n\n";

// OAuth Tokens
$accesstoken = "???";

//z.B. meine letzten Aktivitäten auslesen
$APIurl = "https://www.googleapis.com/plus/v1/people/me/activities/public";

// oder meine ("me") Daten:
//$APIurl = "https://www.googleapis.com/plus/v1/people/me";

//Request aufbauen
$srequest=$APIurl."?access_token=".$accesstoken;

// Der Request ist fertig und sieht so aus:
echo "\nRequest: $srequest\n\n";

// GET vorbereiten &amp; ausführen
$opts = array('http' =&gt;
            array(
                'method'  =&gt; 'GET'
            )
);
$result = file_get_contents($srequest, false, stream_context_create($opts));

// Falls gewünscht das Ergebnis ausgeben
//echo "\nResult:\n" . $result;

// Json umwandeln
$daten=json_decode($result);

// jetzt können die Daten ausgegeben werden, hier
// z. B. Titel, Datum und Inhalt meiner Aktiviäten
for ($i = 0; $i &lt; count($daten-&gt;items); $i++) {
    echo "$i.-----------------------------------------------\n";
    echo "Titel: " . $daten-&gt;items[$i]-&gt;title."\n";
    echo "Datum: " . $daten-&gt;items[$i]-&gt;published."\n";
    echo "Inhalt: " . $daten-&gt;items[$i]-&gt;object-&gt;content."\n";
    echo "\n\n\n";
}

echo "\n\n... das war's!\n";

?&gt;</pre>
<p>Hinweise:</p>
<ul>
<li>Was mit der API noch alles möglich ist kann man in der offiziellen Doku nachlesen: <a href="https://developers.google.com/+/api/" target="_blank">https://developers.google.com/+/api/</a></li>
<li>derzeit (Januar 2012) ist die Google+ API noch „read-only“, d.h. man kann nur Daten lesen, aber nichts schreiben (also z. B. keinen neuen Post versenden).</li>
<li>Statt „me“ in der API-Url kann die ID eines Users angegeben werden.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/770/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/770/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/770/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=770&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2012/01/30/tutorial-google-api-mit-php-bordmitteln-nutzen-teil-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>

		<media:content url="http://frankitberatung.files.wordpress.com/2012/01/bild1.jpg?w=300" medium="image">
			<media:title type="html">Screenshot Tutorial</media:title>
		</media:content>

		<media:content url="http://frankitberatung.files.wordpress.com/2012/01/bild2.jpg?w=300" medium="image">
			<media:title type="html">Screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Tutorial: Einen Pinnwandeintrag bei Facebook mit PHP erstellen</title>
		<link>http://frank-it-beratung.com/2011/12/28/tutorial-einen-pinnwandeintrag-bei-facebook-mit-php-erstellen/</link>
		<comments>http://frank-it-beratung.com/2011/12/28/tutorial-einen-pinnwandeintrag-bei-facebook-mit-php-erstellen/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 10:28:33 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Facebook API]]></category>
		<category><![CDATA[Graph API]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=786</guid>
		<description><![CDATA[Gerade habe ich eine Mail bekommen, ob denn mein Tutorial &#8222;Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil 1)&#8220; auch mit PHP möglich sei &#8211; ja, klar. Zwar gibt es dazu schon viele Tutorials online, deshalb hier nur ganz kurz: Schritt 1-5: identisch wie in meinem Tutorial zu C# Schritt 6: So sieht dies in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=786&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Gerade habe ich eine Mail bekommen, ob denn mein Tutorial <a title="Tutorial: Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil 1)" href="http://frank-it-beratung.com/2010/12/10/tutorial-ein-facebook-pinnwandeintrag-mit-visual-basic-oder-c-teil-1/">&#8222;Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil 1)&#8220;</a> auch mit PHP möglich sei &#8211; ja, klar. Zwar gibt es dazu schon viele Tutorials online, deshalb hier nur ganz kurz:</p>
<p>Schritt 1-5: identisch wie in meinem <a title="Tutorial: Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil 1)" href="http://frank-it-beratung.com/2010/12/10/tutorial-ein-facebook-pinnwandeintrag-mit-visual-basic-oder-c-teil-1/">Tutorial zu C#</a></p>
<p>Schritt 6: So sieht dies in PHP aus:</p>
<p><span id="more-786"></span></p>
<pre>#!/usr/local/bin/php5

&lt;?php

// Tutorial: Facebook API mit PHP Bordmitteln

echo "Tutorial: Facebook API mit PHP Bordmitteln";
echo "\n\n";

// OAuth Tokens
$accesstoken = "???";

//z.B. mein Feed:
$APIurl = "https://graph.facebook.com/me/feed";

$nachricht="Hallo dies ist ein Test!";

//Request aufbauen
$params="message=".rawurlencode($nachricht);
$params.="&amp;access_token=".$accesstoken;

echo "\nParameter: $params\n\n";

// POST vorbereiten &amp; ausführen
$opts = array('http' =&gt;
    array(
        'method'  =&gt; 'POST',
        'header'  =&gt; 'Content-type: application/x-www-form-urlencoded',
        'content' =&gt; $params
    )
);
$result = file_get_contents($APIurl, false, stream_context_create($opts));

// Falls gewünscht das Ergebnis ausgeben
echo "\nResult:\n" . $result;

// und ggf. json umwandeln
$daten=json_decode($result);

//um z. B. die ID auszugeben:
echo "ID des neues Posts: " . $daten-&gt;id;

echo "\n\n... das war's!\n";

?&gt;</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/786/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=786&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2011/12/28/tutorial-einen-pinnwandeintrag-bei-facebook-mit-php-erstellen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>
	</item>
		<item>
		<title>Facebook API Tutorial: Mit C# oder Visual Basic ein Foto uploaden (Tutorial Teil 4)</title>
		<link>http://frank-it-beratung.com/2011/11/14/tutorial-mit-c-oder-visual-basic-ein-foto-uploaden-facebook-api-tutorial-teil-4/</link>
		<comments>http://frank-it-beratung.com/2011/11/14/tutorial-mit-c-oder-visual-basic-ein-foto-uploaden-facebook-api-tutorial-teil-4/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 16:12:01 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Graph API]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[C#. Facebook API]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=716</guid>
		<description><![CDATA[Aufgrund einiger Anfragen habe ich schnell diesen vierten Teil des Facebook-Tutorials geschrieben in dem erklärt wird, wie man via C# oder Visual Basic ein Foto zu Facebook hochladen kann. 1. Die Vorarbeiten werden in Teil 1, Teil 2 und Teil 3 dieses Tutorials erklärt. Jetzt habe ich das Formular mit einem Feld für den Dateinamen [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=716&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aufgrund einiger Anfragen habe ich schnell diesen vierten Teil des Facebook-Tutorials geschrieben in dem erklärt wird, wie man via C# oder Visual Basic ein Foto zu Facebook hochladen kann.</p>
<p>1. Die Vorarbeiten werden in <a title="Tutorial: Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil 1)" href="http://frank-it-beratung.com/2010/12/10/tutorial-ein-facebook-pinnwandeintrag-mit-visual-basic-oder-c-teil-1/">Teil 1</a>, <a title="Tutorial: Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil 2)" href="http://frank-it-beratung.com/2011/01/29/tutorial-ein-facebook-pinnwandeintrag-mit-visual-basic-oder-c-teil-2/">Teil 2</a> und <a title="Tutorial: Auf Facebook mit Visual Basic oder C# bei einem Freund einen Pinnwandeintrag posten (Teil 3)" href="http://frank-it-beratung.com/2011/02/18/tutorial-facebook-vb-csharp-pinnwandeintrag-bei-freund/">Teil 3</a> dieses Tutorials erklärt. Jetzt habe ich das Formular mit einem Feld für den Dateinamen und Pfad sowie einer Taste &#8222;Fotoupload&#8220; ergänzt (Wer es etwas komfortabler haben möchte und den Dateinamen nicht tippen möchte kann noch den &#8222;OpenFileDialog&#8220; bedienen, auf das ich hier verzichtet habe).</p>
<p><a href="http://frankitberatung.files.wordpress.com/2011/11/screen11.jpg"><img title="Facebook API Tutorial C#" src="http://frankitberatung.files.wordpress.com/2011/11/screen11.jpg?w=593&#038;h=239" alt="" width="593" height="239" /></a></p>
<p><span id="more-716"></span></p>
<p>2. Statt WebClient.UploadData verwende ich nun UploadFile und poste dies an &#8222;https://graph.facebook.com/me/photos&#8220;. Statt &#8222;me&#8220; kann ich auch die Nummer eines meiner Alben angeben oder sogar den Namen eines meiner Freunde (falls die eine Upload zulassen).</p>
<p>3. Der Parameter &#8222;message&#8220; dient zu Bildbeschreibung. Zudem kann man noch Tags, Beschreibungen usw. angeben, Details siehe in der Doku von <a href="http://developers.facebook.com/docs/reference/api/photo/" target="_blank">Facebook Developer</a>.</p>
<p>4. Der komplette Code für das Click-Event auf die Taste  &#8222;Fotouplaod&#8220; sieht dann folgendermaßen aus:</p>
<pre>private void buttonUpload_Click(object sender, EventArgs e)
{
 byte[] Nachricht = null;
 byte[] Antwort = null;
 string AccessToken = null;
 string u = "";

 AccessToken = txtAccessToken.Text;

 if (string.IsNullOrEmpty(AccessToken))
 {
   MessageBox.Show("Bitte erst auf 'Login' klicken");
   return;
 }

  //postet das Foto unter "Fotos" des ausgewählten Users:            
  string GraphURL = "https://graph.facebook.com/me/photos";

  //WebClient anlegen
  System.Net.WebClient myWebClient = new System.Net.WebClient();

  //Except100 ausschalten, sonst gibt es u. U. Fehlermeldungen
  System.Net.ServicePointManager.Expect100Continue = false;

  u = "?message=" + txtStatusupdate.Text + "&amp;access_token=" + AccessToken;
  Nachricht = Encoding.UTF8.GetBytes(u);

  try
  {
   Antwort = myWebClient.UploadFile(GraphURL+u, "POST", textBoxDateiname.Text);
   //MessageBox.Show(System.Text.Encoding.ASCII.GetString(Antwort));
   MessageBox.Show("Foto erfogreich hochgeladen!");
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message);
  }
}</pre>
<p><strong>Alternative: FileUploadAsync</strong></p>
<p>In einem Kommentar zum meinem letzten Tutorials wurde ich gefragt, ob dies mit &#8222;Async&#8220; nicht schöner wäre &#8211; natürlich! Ich wollte es nur nicht unnötig kompliziert machen. Aber wenn hier ein großes Foto hochgeladen wird wäre es natürlich besser, wenn die Anwendung solange nicht &#8222;einfriert&#8220; und stattdessen z. B. den Fortschritt anzeigt. Dafür erweitere ich das Formular um eine Taste &#8222;Fotoupload (async)&#8220; sowie ein Label, in dem der Fortschritt des Uploads angezeigt werden soll:</p>
<p><a href="http://frankitberatung.files.wordpress.com/2011/11/screen2.jpg"><img class="alignnone size-full wp-image-734" title="Facebook API Tutorial mit C#" src="http://frankitberatung.files.wordpress.com/2011/11/screen2.jpg?w=600" alt=""   /></a></p>
<p>Der Code für einen &#8222;async&#8220;-Upload dazu sieht dann so aus:</p>
<pre>private void buttonAsyncUpload_Click_1(object sender, EventArgs e)
{
  byte[] Nachricht = null;            
  string AccessToken = null;
  string u = "";

  AccessToken = txtAccessToken.Text;

  if (string.IsNullOrEmpty(AccessToken))
  {
    MessageBox.Show("Bitte erst auf 'Login' klicken");
    return;
  }

  string GraphURL = "https://graph.facebook.com/me/photos";

  //WebClient anlegen
  System.Net.WebClient myWebClient = new System.Net.WebClient();

  //Except100 ausschalten, sonst gibt es u. U. Fehlermeldungen
  System.Net.ServicePointManager.Expect100Continue = false;

  u = "?message=" + txtStatusupdate.Text + "&amp;access_token=" + AccessToken;
  Nachricht = Encoding.UTF8.GetBytes(u);

  //hier werden die Callbacks festgelegt:
  myWebClient.UploadProgressChanged +=
   new UploadProgressChangedEventHandler(UploadProgessChange);
  myWebClient.UploadFileCompleted +=
   new UploadFileCompletedEventHandler(UploadFertig);

  try
  {
    myWebClient.UploadFileAsync(new Uri(GraphURL + u),
     "POST", textBoxDateiname.Text);
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message);
  }

}

private void UploadProgessChange(object sender,
  UploadProgressChangedEventArgs e)
{
  LabelUpload.Text = e.ProgressPercentage.ToString() + "%";
  // Alternativen: e.UserState, e.BytesReceived, e.TotalBytesToReceive,...
}

private void UploadFertig(object sender, UploadFileCompletedEventArgs e)
{            
  MessageBox.Show("Upload fertig!");
  //ggf. Rückgabewert auslesen:
  //byte[] data = (byte[])e.Result;
  //string textData = System.Text.Encoding.UTF8.GetString(data);
  //MessageBox.Show("Result: " + textData);  
}</pre>
<p>Codebeispiele in Visual Basic folgen!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/716/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=716&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2011/11/14/tutorial-mit-c-oder-visual-basic-ein-foto-uploaden-facebook-api-tutorial-teil-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>

		<media:content url="http://frankitberatung.files.wordpress.com/2011/11/screen11.jpg" medium="image">
			<media:title type="html">Facebook API Tutorial C#</media:title>
		</media:content>

		<media:content url="http://frankitberatung.files.wordpress.com/2011/11/screen2.jpg" medium="image">
			<media:title type="html">Facebook API Tutorial mit C#</media:title>
		</media:content>
	</item>
		<item>
		<title>Neue Version Access Token Manager &#8211; jetzt auch mit Google+ Unterstützung</title>
		<link>http://frank-it-beratung.com/2011/10/14/neue-version-access-token-manager-jetzt-auch-mit-google-unterstutzung/</link>
		<comments>http://frank-it-beratung.com/2011/10/14/neue-version-access-token-manager-jetzt-auch-mit-google-unterstutzung/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 08:51:51 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google API]]></category>
		<category><![CDATA[Access Token]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[OAuth]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=691</guid>
		<description><![CDATA[Gerade habe ich schnell eine neue Version (1.2) des Access Token Managers online gestellt. Da er nun auch Google+ (eigentlich sämtliche Google-Dienste) unterstüzt (man also auch Access Tokens mit OAuth für Google+ erstellen kann) hat das Tool einen neuen Namen bekommen und heißt nun einfach nur &#8222;Access Token Manager&#8220;. In den nächsten Tagen werde ich [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=691&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Gerade habe ich schnell eine neue Version (1.2) des Access Token Managers online gestellt. Da er nun auch Google+ (eigentlich sämtliche Google-Dienste) unterstüzt (man also auch Access Tokens mit OAuth für Google+ erstellen kann) hat das Tool einen neuen Namen bekommen und heißt nun einfach nur &#8222;Access Token Manager&#8220;.</p>
<p><a href="http://frankitberatung.files.wordpress.com/2011/10/bild1.jpg"><img class="size-medium wp-image-700 alignleft" title="Access Token Manager" src="http://frankitberatung.files.wordpress.com/2011/10/bild1.jpg?w=300&#038;h=279" alt="" width="300" height="279" /></a></p>
<p>In den nächsten Tagen werde ich ein Tutorial zu Google+ API schreiben und dann auch die Funktionen genauer erklären.</p>
<p><strong><a href="http://www.frank-it-beratung.de/setupdotnettools/FBAccessTokenManager/setup.exe" target="_blank">Download &#8222;setup.exe&#8220; Access Token Manager</a><br />
</strong></p>
<p>Interessierte können den <strong>Quelltext</strong> ebenfalls einsehen und nach eigenen Wünschen verändern und weiterentwickeln (Lizenz: <a href="http://creativecommons.org/licenses/by/3.0/de/" target="_blank">CC BY 3.0</a>, also mit Namensnennung). Auf Wunsch eines Kollegens habe ich das nicht in C# sondern in Visual Basic geschrieben &#8211; (was mich inzwischen auch schon ärgert, aber nun ist es zu spät). Visual Studio 2010 Express Editon ist ausreichend:</p>
<p><strong><strong>Quellcode AccessTokenManager (Lizenz: <a href="http://creativecommons.org/licenses/by/3.0/de/" target="_blank">CC 3.0 BY</a>): <a href="http://www.frank-it-beratung.de/tutorialsetc/FBAccessTokenManager/frmMain_v1.2.vb.txt" target="_blank">frmMain.vb</a> (und <a href="http://www.frank-it-beratung.de/tutorialsetc/FBAccessTokenManager/frmMain.Designer_v1.2.vb.txt" target="_blank">frmMain.Designer.vb</a>)</strong></strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/691/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/691/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/691/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/691/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/691/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/691/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/691/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/691/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/691/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/691/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/691/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/691/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/691/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/691/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=691&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2011/10/14/neue-version-access-token-manager-jetzt-auch-mit-google-unterstutzung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>

		<media:content url="http://frankitberatung.files.wordpress.com/2011/10/bild1.jpg?w=300" medium="image">
			<media:title type="html">Access Token Manager</media:title>
		</media:content>
	</item>
		<item>
		<title>Facebook Access Tokens mit FB Access Token Manager erstellen &#8211; neue Version mit kleinen Verbesserungen</title>
		<link>http://frank-it-beratung.com/2011/10/11/facebook-access-tokens-mit-fb-access-token-manager-erstellen-neue-version-mit-kleinen-verbesserungen/</link>
		<comments>http://frank-it-beratung.com/2011/10/11/facebook-access-tokens-mit-fb-access-token-manager-erstellen-neue-version-mit-kleinen-verbesserungen/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 15:43:09 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Graph API]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[Access Token]]></category>
		<category><![CDATA[access_token]]></category>
		<category><![CDATA[Facebook Access Token]]></category>
		<category><![CDATA[FB]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=678</guid>
		<description><![CDATA[Um schnell und unkompliziert Access-Tokens für Facebook zu generieren habe ich vor einiger Zeit in Rahmen eines Projektes ein kleines Tool („FB Access Token Manager“) mit einem einfachen GUI geschrieben, mit dem sich dies ganz komfortabel bewerkstelligen lässt (und dies auch hier genauer beschrieben). Facebook-API Programmierer können damit sehr schnell für die unterschiedlichsten Apps und [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=678&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Um schnell und unkompliziert Access-Tokens für Facebook zu generieren habe ich vor einiger Zeit in Rahmen eines Projektes ein kleines Tool („FB Access Token Manager“) mit einem einfachen GUI geschrieben, mit dem sich dies ganz komfortabel bewerkstelligen lässt (und dies auch <a title="Facebook Access Tokens mit FB Access Token Manager erstellen" href="http://frank-it-beratung.com/2010/12/05/facebook-access-token-tool/">hier</a> genauer beschrieben).</p>
<p><span id="more-678"></span></p>
<p><a href="http://frankitberatung.files.wordpress.com/2011/10/screensho1.png"><img class="size-medium wp-image-684 alignleft" title="Screenshot Facebook Access Token Manager" src="http://frankitberatung.files.wordpress.com/2011/10/screensho1.png?w=289&#038;h=300" alt="" width="289" height="300" /></a></p>
<p>Facebook-API Programmierer können damit sehr schnell für die unterschiedlichsten Apps und Dienste Access Token &#8222;in Serie&#8220; generieren und sich auch komfortabel mit einem Klick die Access-Tokens für Seiten beim Scope &#8222;manage_pages&#8220; holen (Details zu den Permissions finden Sie in der <a href="http://developers.facebook.com/docs/authentication/permissions" target="_blank">offiziellen Doku</a>).</p>
<p><strong>Neu in der Version 1.1:</strong></p>
<ul>
<li>die Schaltfläche &#8222;Test Access Token&#8220; &#8211; diese ruft die &#8222;ME&#8220; Seite des aktuellen Users auf und stellt das Ergebnis (JSON) dar &#8211; wenn es also mit Ihrem Script nicht klappt können Sie prüfen, ob es an dem Access Token oder an Ihrer Programmierkunst liegt <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>die Schaltfläche &#8222;to facebook&#8220; &#8211; ich brauche diese, um Benutzer auszuloggen &#8211; Sie auch?</li>
</ul>
<p>Das Tool „FB Access Token Manager“ kann hier kostenlos heruntergeladen werden:</p>
<p><strong><a href="http://www.frank-it-beratung.de/setupdotnettools/FBAccessTokenManager/setup.exe" target="_blank">Download &#8222;setup.exe&#8220; FB Access Token Manager</a><br />
</strong></p>
<p>Interessierte können den <strong>Quelltext</strong> ebenfalls einsehen und nach eigenen Wünschen verändern und weiterentwickeln (Lizenz: <a href="http://creativecommons.org/licenses/by/3.0/de/" target="_blank">CC BY 3.0</a>, also mit Namensnennung). Auf Wunsch eines Kollegens habe ich das nicht in C# sondern in Visual Basic geschrieben &#8211; (was mich inzwischen auch schon ärgert, aber nun ist es zu spät). Visual Studio 2010 Express Editon ist ausreichend:</p>
<p><strong><strong>Quellcode FB AccessTokenManager: <a href="http://www.frank-it-beratung.de/tutorialsetc/FBAccessTokenManager/frmMain_v1.1.vb.txt" target="_blank">frmMain.vb</a> (und <a href="http://www.frank-it-beratung.de/tutorialsetc/FBAccessTokenManager/frmMain.Designer_v1.1..vb.txt" target="_blank">frmMain.Designer.vb</a>)</strong></strong></p>
<p><strong>Update am 14.10.2011:</strong> Eine neue Version ist erschienen &#8211; jetzt mit Google+ API Unterstüzung, Details dazu <a title="Neue Version Access Token Manager – jetzt auch mit Google+ Unterstützung" href="http://frank-it-beratung.com/2011/10/14/neue-version-access-token-manager-jetzt-auch-mit-google-unterstutzung/">hier</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/678/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=678&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2011/10/11/facebook-access-tokens-mit-fb-access-token-manager-erstellen-neue-version-mit-kleinen-verbesserungen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>

		<media:content url="http://frankitberatung.files.wordpress.com/2011/10/screensho1.png?w=289" medium="image">
			<media:title type="html">Screenshot Facebook Access Token Manager</media:title>
		</media:content>
	</item>
		<item>
		<title>Eine einfache Twitter-Wall mit PHP im Eigenbau</title>
		<link>http://frank-it-beratung.com/2011/09/15/eine-einfache-twitter-wall-mit-php-im-eigenbau/</link>
		<comments>http://frank-it-beratung.com/2011/09/15/eine-einfache-twitter-wall-mit-php-im-eigenbau/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 13:39:29 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter API]]></category>
		<category><![CDATA[Twitter Search API]]></category>
		<category><![CDATA[Twitterwall]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=655</guid>
		<description><![CDATA[Im letzten Monat hatte ich ein kurzes Tutorial zur Suche nach Hashtags in der Twitter Search API geschrieben. Darauf kam eine Anfrage, wie den eine einfache Twitter-Wall mit PHP zu realisieren sei. Auch das ist ganz einfach &#8211; hier sollte man die Parameter since_id verwenden um immer nur die neuesten Tweets nachzuladen. Im folgenden Beispiel [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=655&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Im letzten Monat hatte ich ein kurzes <a title="Suche in Twitter mit PHP Bordmitteln – Ein kurzes Tutorial" href="http://frank-it-beratung.com/2011/08/09/suche-in-twitter-mit-php-bordmitteln-ein-kurzes-tutorial/">Tutorial zur Suche nach Hashtags in der Twitter Search API</a> geschrieben. Darauf kam eine Anfrage, wie den eine einfache Twitter-Wall mit PHP zu realisieren sei. Auch das ist ganz einfach &#8211; hier sollte man die Parameter since_id verwenden um immer nur die neuesten Tweets nachzuladen. Im folgenden Beispiel wurde das ganz einfach mit einem Meta-Refresh der Seite realisiert. Schöner wäre dies mit Ajax, aber um das Beispiel möglichst einfach zu halten habe ich darauf verzichtet:<span id="more-655"></span></p>
<pre>&lt;?php

// Tutorial: Eine einfache Twitter-Wall im Eingenbau
// http://frank-it-beratung.com/blog/

session_start();

// Suche nach Hashtag...
$hashtag="design";
$APIurl = "http://search.twitter.com/search.json";

// Refreh-Url mit since_id ggf aus Session laden
if (!isset($_SESSION['refresh_url'])) {
    $param="?q=%23".$hashtag;    
} else {
    $param=$_SESSION['refresh_url'];
}
$APIurl.=$param;

// weitere Paramter für die Suche siehe
// https://dev.twitter.com/docs/using-search

// GET vorbereiten
$opts = array('http' =&gt;
            array(
                'method'  =&gt; 'GET'
            )
        );

// mit file_get_contents versenden
$result = file_get_contents($APIurl, false, stream_context_create($opts));
$json=json_decode($result);

// since_id in Session speichern
$_SESSION['refresh_url']=$json-&gt;refresh_url;

// neue Ergebnisse seit der letzten Suche
$neueergebnisse="";
for ($i = 0; $i &lt; count($json-&gt;results); $i++) {
    $neueergebnisse.="&lt;img src='".$json-&gt;results[$i]-&gt;profile_image_url;
    $neueergebnisse.="' align='left' width='48' height='48' hspace='5' /&gt;";    
    $neueergebnisse.=$json-&gt;results[$i]-&gt;from_user;
    $neueergebnisse.=" (ID: " .$json-&gt;results[$i]-&gt;from_user_id .")&lt;br/&gt;";    
    $neueergebnisse.="&lt;strong style='font-size:20pt;'&gt;";
    $neueergebnisse.=utf8_decode($json-&gt;results[$i]-&gt;text)."&lt;/strong&gt;";
    $neueergebnisse.="&lt;br/&gt;";    
    $neueergebnisse.="Datum: ". $json-&gt;results[$i]-&gt;created_at;
    $neueergebnisse.=" (Tweet-ID: " . $json-&gt;results[$i]-&gt;id_str.")";    
    $neueergebnisse.="&lt;hr/&gt;";
}

// Alte Ergebnisse aus Session holen
// besser wäre hier u. U. Speicherung in einer Datenbank
if (isset($_SESSION['altetreffer'])) {
    $altetreffer=$_SESSION['altetreffer'];
} else {
    $altetreffer="";
}

// Alte und neue zusammenfügen und in Session legen
$alletreffer=$neueergebnisse . $altetreffer;
$_SESSION['altetreffer']=$alletreffer;

?&gt;

&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset="ISO-8859-1"&gt;
&lt;title&gt;Twitter-Wall Tutorial&lt;/title&gt;
&lt;?php
// optimal wäre eine Ajax-Lösung, aber hier ganz einfach
// mit einem Refresh alle 60 Sekunden (Achtung: Rate Limit!)
?&gt;
&lt;meta http-equiv="refresh" content="60; URL=Twitterwall-Tutorial.php"&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Twitter-Wall für #&lt;?php echo $hashtag ?&gt;&lt;/h1&gt;
Anzahl neuer Treffer: &lt;?php echo count($json-&gt;results); ?&gt;
am &lt;?php echo date("d.m.Y H:m:i"); ?&gt; Uhr
&lt;hr/&gt;
&lt;?php echo $alletreffer; ?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/655/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=655&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2011/09/15/eine-einfache-twitter-wall-mit-php-im-eigenbau/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>
	</item>
		<item>
		<title>Suche in Twitter mit PHP Bordmitteln &#8211; Ein kurzes Tutorial</title>
		<link>http://frank-it-beratung.com/2011/08/09/suche-in-twitter-mit-php-bordmitteln-ein-kurzes-tutorial/</link>
		<comments>http://frank-it-beratung.com/2011/08/09/suche-in-twitter-mit-php-bordmitteln-ein-kurzes-tutorial/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 13:30:59 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter API]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=648</guid>
		<description><![CDATA[Wegen des Tutorials zu Twitter mit OAuth und PHP hatte ich eine Anfrage, wie eine Suche nach Hashtags zu realisieren sei &#8211; das ist ganz einfach, da keine Authentifizierung mit OAuth erforderlich ist. Hier ein kleines selbsterklärendes Beispiel, das Twitter nach dem Hashtag #design durchsucht und die aktuellsten 15 Tweets zurückliefert und darstellt (Details zu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=648&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Wegen des Tutorials zu <a title="Tutorial: Twitter API mit PHP-Bordmitteln" href="http://frank-it-beratung.com/2011/04/15/tutorial-twitter-api-mit-php-bordmitteln/">Twitter mit OAuth und PHP</a> hatte ich eine Anfrage, wie eine Suche nach Hashtags zu realisieren sei &#8211; das ist ganz einfach, da keine Authentifizierung mit OAuth erforderlich ist. Hier ein kleines selbsterklärendes Beispiel, das Twitter nach dem Hashtag #design durchsucht und die aktuellsten 15 Tweets zurückliefert und darstellt (Details zu den Suchoptionen siehe <a href="https://dev.twitter.com/docs/using-search" target="_blank">https://dev.twitter.com/docs/using-search</a>).<span id="more-648"></span></p>
<pre>&lt;?php

// Suche in Twitter mit PHP Bordmitteln - Ein kurzes Tutorial
// www.Frank-IT-Beratung.com/blog/

// Suche nach Hashtag "design"
$hashtag="design";
$APIurl = "http://search.twitter.com/search.json";

// weitere Paramter für die Suche siehe
// https://dev.twitter.com/docs/using-search
$param="?q=%23".$hashtag;    
$APIurl.=$param;

// GET vorbereiten
$opts = array('http' =&gt;
            array(
                'method'  =&gt; 'GET'
            )
        );

// mit file_get_contents versenden
$result = file_get_contents($APIurl, false, stream_context_create($opts));
$json=json_decode($result);
$ergebnisse="";
for ($i = 0; $i &lt; count($json-&gt;results); $i++) {
    $ergebnisse.="&lt;img src='".$json-&gt;results[$i]-&gt;profile_image_url;
    $ergebnisse.="' align='left' width='48' height='48' hspace='5' /&gt;";    
    $ergebnisse.=$json-&gt;results[$i]-&gt;from_user;
    $ergebnisse.=" (ID: " .$json-&gt;results[$i]-&gt;from_user_id .")&lt;br/&gt;";    
    $ergebnisse.="&lt;strong style='font-size:20pt;'&gt;";
    $ergebnisse.=utf8_decode($json-&gt;results[$i]-&gt;text)."&lt;/strong&gt;";
    $ergebnisse.="&lt;br/&gt;";    
    $ergebnisse.="Datum: ". $json-&gt;results[$i]-&gt;created_at;
    $ergebnisse.=" (Tweet-ID: " . $json-&gt;results[$i]-&gt;id_str.")";    
    $ergebnisse.="&lt;hr/&gt;";
}
?&gt;

&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset="ISO-8859-1"&gt;
&lt;title&gt;Tutorial: Suche in Twitter&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Suche nach #&lt;?php echo $hashtag ?&gt;&lt;/h1&gt;
Anzahl Treffer: &lt;?php echo count($json-&gt;results); ?&gt;
am &lt;?php echo date("d.m.Y H:m:i"); ?&gt; Uhr
&lt;hr/&gt;
&lt;?php echo $ergebnisse; ?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/648/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/648/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/648/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/648/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/648/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/648/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/648/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/648/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/648/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/648/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/648/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/648/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/648/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/648/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=648&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2011/08/09/suche-in-twitter-mit-php-bordmitteln-ein-kurzes-tutorial/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>
	</item>
		<item>
		<title>OAuth Probleme mit Umlauten: Lösungen für PHP, Perl, C#, VB</title>
		<link>http://frank-it-beratung.com/2011/07/16/oauth-probleme-mit-umlauten-losungen-fur-php-perl-c/</link>
		<comments>http://frank-it-beratung.com/2011/07/16/oauth-probleme-mit-umlauten-losungen-fur-php-perl-c/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 16:07:23 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Sonderzeichen]]></category>
		<category><![CDATA[Umlaute]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[VisualBasic]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=634</guid>
		<description><![CDATA[Nahezu alle aktuellen Social Networks nutzen inzwischen OAuth zur Authentifizierung. In diversen Blogposts habe ich dies schon genauer für Twitter, Facebook &#38; Co beschrieben. Ein bekanntes Problem ist die richtige Darstellung der Leer- und Sonderzeichen sowie der deutschen Umlaute. Hier eine Zusammenstellung der Lösungen (Details können in den einzelnen Beiträgen nachgelesen werden): PHP: rawurlencode+utf8_encode ist [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=634&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nahezu alle aktuellen Social Networks nutzen inzwischen OAuth zur Authentifizierung. In diversen Blogposts habe ich dies schon genauer für Twitter, Facebook &amp; Co beschrieben. Ein bekanntes Problem ist die richtige Darstellung der Leer- und Sonderzeichen sowie der deutschen Umlaute. Hier eine Zusammenstellung der Lösungen (Details können in den einzelnen Beiträgen nachgelesen werden):</p>
<p><span id="more-634"></span><strong>PHP</strong>: rawurlencode+utf8_encode ist die Lösung:</p>
<pre>$params=rawurlencode(utf8_encode("Hallöchen Simon wie geht's?"));</pre>
<p><strong>C#:</strong> Hier sind es einige Zeilen, die Idee ist von Andre Arnott, Details siehe <a title="Twitter mit OAuth und C# – So geht’s auch mit Umlauten und Sonderzeichen" href="http://frank-it-beratung.com/2010/11/04/twitter-mit-oauth-und-c-so-gehts-auch-mit-umlauten-und-sonderzeichen/">hier</a></p>
<pre>string[] UriRfc3986CharsToEscape = new[] { "!", "*", "'", "(", ")" };
 StringBuilder escaped =
   new StringBuilder(Uri.EscapeDataString(txtTweet.Text.ToString()));

 for (int i = 0; i &lt; UriRfc3986CharsToEscape.Length; i++)
 {
   escaped.Replace(UriRfc3986CharsToEscape[i],
    Uri.HexEscape(UriRfc3986CharsToEscape[i][0]));
 }
 Parameters = "&amp;text=" + escaped.ToString();</pre>
<p><strong>VB/Visual Basic:</strong> wie in C# (vgl. oben)</p>
<pre>Dim UriRfc3986CharsToEscape As String() = _
 New () {"!", "*", "'", "(", ")"}
Dim escaped As New _
  StringBuilder(Uri.EscapeDataString(txtTweet.Text.ToString()))
For i As Integer = 0 To UriRfc3986CharsToEscape.Length - 1
  escaped.Replace(UriRfc3986CharsToEscape(i), _
   Uri.HexEscape(UriRfc3986CharsToEscape(i)(0)))
Next i
Parameters = "&amp;text=" &amp; escaped.ToString()</pre>
<p><strong>Perl</strong>: Hier ist ein decode_utf8 ausreichend, z. B. bei Net::OAuth</p>
<pre>extra_params =&gt; {
       text =&gt; decode_utf8($nachricht)
}</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/634/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=634&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2011/07/16/oauth-probleme-mit-umlauten-losungen-fur-php-perl-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>
	</item>
		<item>
		<title>Tutorial: Twitter API mit PHP-Bordmitteln &#8211; So geht&#8217;s mit POST und GET</title>
		<link>http://frank-it-beratung.com/2011/06/12/tutorial-twitter-api-mit-php-bordmitteln-so-gehts-mit-post-und-get/</link>
		<comments>http://frank-it-beratung.com/2011/06/12/tutorial-twitter-api-mit-php-bordmitteln-so-gehts-mit-post-und-get/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 15:27:42 +0000</pubDate>
		<dc:creator>Simon A. Frank</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Twitter API]]></category>

		<guid isPermaLink="false">http://frank-it-beratung.com/?p=625</guid>
		<description><![CDATA[In den letzten Wochen hatte ich in einem kurzen Tutorial beschrieben, wie man mit PHP-Bordmitteln ohne SDKs und Frameworks eine Twitter direct message bzw. Tweets verschicken kann. Wie John richtig in einer Mail geschrieben hat geht mein Code nur mit method=&#8220;POST&#8220;. Manchmal ist aber von der Twitter API ein GET vorgeschrieben, z. B. wenn man [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=625&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In den letzten Wochen hatte ich in <a title="Tutorial: Twitter API mit PHP-Bordmitteln" href="http://frank-it-beratung.com/2011/04/15/tutorial-twitter-api-mit-php-bordmitteln/">einem kurzen Tutorial</a> beschrieben, wie man mit PHP-Bordmitteln ohne SDKs und Frameworks eine Twitter direct message bzw. Tweets verschicken kann. Wie John richtig in einer Mail geschrieben hat geht mein Code nur mit method=&#8220;POST&#8220;. Manchmal ist aber von der Twitter API ein GET vorgeschrieben, z. B. wenn man auslesen möchte, welchen andere Twitter-User einen erwähnt haben (mentions). Deshalb hier die Info, wie es auch mit GET geht:</p>
<p><span id="more-625"></span></p>
<pre>#!/usr/local/bin/php5

&lt;?php

// Tutorial: Twitter via OAuth mit PHP Bordmitteln

echo "OAuth Tutorial";
echo "\n\n";

// OAuth Tokens User
$accesstoken = "???";
$accesssecret = "???";

// OAuth Keys App
$consumerkey ="???";
$consumerkeysecret="???";

// 1. Beispiel direct message an Simon_A_Frank
// $APIurl = "https://api.twitter.com/direct_messages/new.xml";
// $params="user=Simon_A_Frank&amp;text=";
// doppelt codieren, sonst gehen Umlaute, Sonder und Leerzeichen nicht
// $params.=rawurlencode(utf8_encode("Hallöchen Simon wie geht's?"));
// $reqmethod = "POST";

// 2. Beispiel: Einen Tweet versenden
// $APIurl = "http://api.twitter.com/1/statuses/update.xml";
// $params ="trim_user=true&amp;status=".
//     rawurlencode(utf8_encode("@Simon_A_Frank ok, wunderbar!"));
// $reqmethod = "POST";

// 3. Beispiel: Mit method=get Mentions lesen
$APIurl = "http://api.twitter.com/1/statuses/mentions.xml";
$params ="trim_user=true&amp;count=5";
$reqmethod = "GET";

// Request bauen ...
$srequest="oauth_consumer_key=".$consumerkey;
$srequest.="&amp;oauth_nonce=".rand(10000001,99999999);            
$srequest.="&amp;oauth_signature_method=HMAC-SHA1";
$srequest.="&amp;oauth_timestamp=" . time();        
$srequest.="&amp;oauth_token=" . $accesstoken;
$srequest.="&amp;oauth_version=1.0";
if ($params!="") {
    $srequest.="&amp;".$params;
}    

// Alle Parameter müssen sortiert sein
$sr=explode("&amp;",$srequest);
sort($sr);    
$srequestSorted=implode("&amp;",$sr);    

// Basestring und Key:
$key=$consumerkeysecret."&amp;".$accesssecret;      
$basestring=strtoupper($reqmethod)."&amp;".rawurlencode($APIurl).
  "&amp;".rawurlencode($srequestSorted);

// Signatur erzeugen
$sig=rawurlencode(base64_encode(hash_hmac('sha1', $basestring, $key, true)));    

// Signatur einfügen - für den Request muss diese nicht sortiert sein    
$srequest.="&amp;oauth_signature=$sig";

// Der Request ist fertig und sieht so aus:
echo "\nRequest: $srequest\n\n";

// POST oder GET?
if ($reqmethod=="POST") {
    $opts = array('http' =&gt;
        array(
            'method'  =&gt; 'POST',
            'header'  =&gt; 'Content-type: application/x-www-form-urlencoded',
            'content' =&gt; $srequest
        )
    );
} else
{
    $opts = array('http' =&gt;
        array(
            'method'  =&gt; 'GET'
        )
    );
    $APIurl=$APIurl."?".$srequest;    
}

// mit file_get_contents versenden
$result = file_get_contents($APIurl, false, stream_context_create($opts));
// Das Ergebnis ausgeben
echo "\nResult:\n" . $result;
echo "\n... das war's!\n";

?&gt;</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frankitberatung.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frankitberatung.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/frankitberatung.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/frankitberatung.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/frankitberatung.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/frankitberatung.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/frankitberatung.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/frankitberatung.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/frankitberatung.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/frankitberatung.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/frankitberatung.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/frankitberatung.wordpress.com/625/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/frankitberatung.wordpress.com/625/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/frankitberatung.wordpress.com/625/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=frank-it-beratung.com&amp;blog=8626129&amp;post=625&amp;subd=frankitberatung&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://frank-it-beratung.com/2011/06/12/tutorial-twitter-api-mit-php-bordmitteln-so-gehts-mit-post-und-get/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f05b723c4d2e03a33a32270107af8511?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Simon</media:title>
		</media:content>
	</item>
	</channel>
</rss>
