<?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/"
	>

<channel>
	<title>140dev</title>
	<atom:link href="http://140dev.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://140dev.com</link>
	<description>Twitter API Programming Tips, Tutorials, Source Code Libraries and Consulting by Adam Green</description>
	<lastBuildDate>Wed, 03 Apr 2013 23:48:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Converting the 140dev Twitter Framework to use OAuth and API 1.1</title>
		<link>http://140dev.com/twitter-api-programming-blog/converting-the-140dev-twitter-framework-to-use-oauth-and-api-1-1/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/converting-the-140dev-twitter-framework-to-use-oauth-and-api-1-1/#comments</comments>
		<pubDate>Wed, 03 Apr 2013 23:48:55 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Streaming API]]></category>
		<category><![CDATA[Twitter OAuth]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2041</guid>
		<description><![CDATA[Twitter has announced that they will be turning off basic authentication for the Streaming API on May 7th. I&#8217;m preparing a new version of the 140dev Framework to use OAuth now, and will have it posted tomorrow. That will be good for new users of this code, but if you already have the code in [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Twitter has announced that they will be turning off basic authentication for the Streaming API on May 7th. I&#8217;m preparing a new version of the 140dev Framework to use OAuth now, and will have it posted tomorrow. That will be good for new users of this code, but if you already have the code in production, I assume you have made changes to it. Here is a detailed set of instructions for modifying an existing installation to use OAuth. The good thing is that you only have to use single-user OAuth, which is pretty easy to implement. These notes should give you everything you need.</p>
<p>Obvious, but very IMPORTANT note: Make a complete backup of any current version of this code you now have in production before making these changes.</p>
<p>There are 5 steps you have to follow to convert an existing installation of this code to use OAuth with the streaming API version 1.1. </p>
<p>1. Create a Twitter application at <a href="http://dev.twitter.com">http://dev.twitter.com</a>, and get a complete set of tokens. If you haven&#8217;t created an app before, you will find detailed instruction in my <a href="http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-single-user-twitter-oauth-programming/">free ebook</a>. </p>
<p>You need 4 tokens as defined on the details page of the application settings:<br />
Consumer Key<br />
Consumer Secret<br />
Access Token<br />
Access Token Secret</p>
<p>It is traditional to rename these tokens in every library that uses them. This has happened again with the Phirehose OAuth library. Here are the new names:<br />
Consumer Key = TWITTER_CONSUMER_KEY<br />
Consumer Secret = TWITTER_CONSUMER_SECRET<br />
Access Token = OAUTH_TOKEN<br />
Access Token Secret = OAUTH_SECRET</p>
<p>2. Modify the 140dev_config.php file in the 140dev Framework code. This is found in /db/140dev_config.php. </p>
<p>You need to replace these lines of code:<br />
// Basic authorization settings for connecting to the Twitter streaming API<br />
// Fill in the values for a valid Twitter account<br />
define(&#8216;STREAM_ACCOUNT&#8217;, &#8216;*****&#8217;);<br />
define(&#8216;STREAM_PASSWORD&#8217;, &#8216;*****&#8217;);</p>
<p>With these new lines. Insert the actual tokens you received from Twitter in step 1:<br />
// OAuth settings for connecting to the Twitter streaming API<br />
// Fill in the values for a valid Twitter app<br />
define(&#8216;TWITTER_CONSUMER_KEY&#8217;,'******&#8217;);<br />
define(&#8216;TWITTER_CONSUMER_SECRET&#8217;,'******&#8217;);<br />
define(&#8216;OAUTH_TOKEN&#8217;,'******&#8217;);<br />
define(&#8216;OAUTH_SECRET&#8217;,'******&#8217;);</p>
<p>3. Get new copies of the Phirehose library code. You need to delete Phirehose.php in your current installation. It will be found in the /libraries/phirehose/ directory. Then download these files and place them in the /libraries/phirehose/ directory:<br />
<a href="https://github.com/fennb/phirehose/blob/master/lib/Phirehose.php">Phirehose.php</a><br />
<a href="https://github.com/fennb/phirehose/blob/master/lib/OauthPhirehose.php">OauthPhirehose.php</a></p>
<p>4. The latest version of Phirehose.php still points to the 1.0 version of the streaming API. To point to version 1.1, you need to change line 20 of Phirehose.php from this:<br />
  const URL_BASE = &#8216;https://stream.twitter.com/1/statuses/&#8217;;</p>
<p>To this:<br />
  const URL_BASE  = &#8216;https://stream.twitter.com/1.1/statuses/&#8217;;</p>
<p>5. The final step is modifying your copy of get_tweets.php, which is found in /db/get_tweets.php. There are two code changes:</p>
<p>First replace these lines starting at line 13:<br />
// Extend the Phirehose class to capture tweets in the json_cache MySQL table<br />
require_once(CODE_DIR . &#8216;libraries/phirehose/phirehose.php&#8217;);<br />
class Consumer extends Phirehose</p>
<p>With these new lines:<br />
require_once(CODE_DIR . &#8216;libraries/phirehose/Phirehose.php&#8217;);<br />
require_once(CODE_DIR . &#8216;libraries/phirehose/OauthPhirehose.php&#8217;);<br />
class Consumer extends OauthPhirehose</p>
<p>Then replace this line:<br />
$stream = new Consumer(STREAM_ACCOUNT, STREAM_PASSWORD, Phirehose::METHOD_FILTER);</p>
<p>With this one:<br />
$stream = new Consumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_FILTER);</p>
<p>Once you have made all these changes, you need to test out your code. Running the new code in the background with nohup is not an effective test method, since you can&#8217;t see the errror messages. To test the code, I would log into the directory with get_tweets.php and run it directly with:<br />
php get_tweets.php</p>
<p>If it works, you will not see any error codes and data will flow into json_cache.php. Relive the thrill of when that first happened for you. </p>
<p>If it doesn&#8217;t work, there are a couple of things to try:<br />
- Make sure all your paths are correct.<br />
- Make sure you copied your OAuth tokens correctly into the config file.<br />
- Make sure you downloaded a clean set of files from GitHub for Phirehose. It is very common to get HTML in the downloaded files by mistake. </p>
<p>If all else fails, I find cursing helps at this point. When you calm down, post a message at our <a href="https://groups.google.com/forum/?fromgroups#!forum/140dev-twitter-framework">Google Group</a>, and I&#8217;ll try to help. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/converting-the-140dev-twitter-framework-to-use-oauth-and-api-1-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter API Ebook: Javascript Programming for Twitter API 1.1</title>
		<link>http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-javascript-programming/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-javascript-programming/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 00:17:46 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Twitter API Tutorials]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=2004</guid>
		<description><![CDATA[Javascript programming for Twitter changes dramatically with Twitter API version 1.1. The requirement to use OAuth with every API request means that you can no longer call the API directly from Javascript. Instead you have to rebuild all your Javascript code to proxy your requests through your own server. I know that a lot of [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="/member"><img class="alignleft" src="/blog_images/ebook_javascript_large.png" alt="" width="200" height="251" /></a> Javascript programming for Twitter changes dramatically with <strong>Twitter API version 1.1</strong>. The requirement to use OAuth with every API request means that you can no longer call the API directly from Javascript. Instead you have to rebuild all your Javascript code to proxy your requests through your own server. </p>
<p>I know that a lot of Twitter programmers don&#8217;t know how to program this way, so I&#8217;ve written a new ebook to explain this coding method. It is available as a <a href="/member">free PDF download on our members page</a>. You can also get the source code for all the examples in the ebook there as well.  Twitter says that version 1.0 will be turned off on March 5th, so we all have to begin the upgrade process or else a lot of web pages are going to break. (Update: The turn-off date for API 1.0 has been extended to May 7th.)</p>
<p>I do my Javascript coding with jQuery on the client side and PHP on the server, so the ebook covers everything you need to know to create Twitter apps using these two languages. </p>
<p>Here are the topics covered:</p>
<ul>
<li>jQuery tutorial</li>
<li>Ajax tutorial for client-server programming</li>
<li>Getting a user timeline with Javascript</li>
<li>Getting the results of a Twitter search with Javascript</li>
<li>Creating a complete Twitter search app with proper tweet display formatting</li>
</ul>
<p>I&#8217;ve also created a new <a href="https://groups.google.com/forum/?fromgroups#!forum/javascript-programming-for-twitter-api">Google Group</a> for questions and discussions of the issues raised by this ebook. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-javascript-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Most common Twitter OAuth programming errors</title>
		<link>http://140dev.com/twitter-api-programming-blog/most-common-twitter-oauth-programming-errors/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/most-common-twitter-oauth-programming-errors/#comments</comments>
		<pubDate>Sat, 26 Jan 2013 14:31:19 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[API error]]></category>
		<category><![CDATA[Twitter API Tutorials]]></category>
		<category><![CDATA[Twitter OAuth]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1992</guid>
		<description><![CDATA[My Twitter OAuth ebook has been out for 2 weeks now, and I&#8217;ve had a chance to help a lot of people get over the hump of running their first OAuth code. I&#8217;ve collected a list of the most common problems they have: No callback URL When you create an app, Twitter has an input [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>My <a href="http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-single-user-twitter-oauth-programming/">Twitter OAuth ebook</a> has been out for 2 weeks now, and I&#8217;ve had a chance to help a lot of people get over the hump of running their first OAuth code. I&#8217;ve collected a list of the most common problems they have:</p>
<p><strong>No callback URL</strong><br />
When you create an app, Twitter has an input field on the application creation page for filling in a callback URL. The URL is used when you create an OAuth login interface that lets people sign in on your site with Twitter. So if you are doing single-user OAuth, you could reasonably think that you can leave this blank. Twitter encourages this thinking by not requiring you to fill in the field on this form. The notes under the field also imply that you don&#8217;t need it: &#8220;To restrict your application from using callbacks, leave this field blank.&#8221; I&#8217;m not sure what this note means, but I do know that you MUST include a callback URL. If you don&#8217;t, the tmhOAuth library will not be able to make an OAuth connection and none of your API code will work. What URL should you use? It doesn&#8217;t matter, as long as it is valid. You can even use http://twitter.com. </p>
<p><strong>Failure to set read write access</strong><br />
The Settings tab in the app creation page has a set of radio buttons that let you set the access level to read write. For some reason, this option is not displayed when you first create an app. You have to create the app, which is set to read only access by default, and then go to the Settings tab and change the access to read write. If you leave it as read only, you will not be able to tweet, follow, or do anything else with the API that changes an account. </p>
<p><strong>Incorrect server clock</strong><br />
The OAuth system is very sensitive to differences between Twitter server clocks and your server. If your server&#8217;s clock is off by more than 5 or 10 minutes, all your OAuth requests will fail. If you don&#8217;t know how to check or set your server clock, ask your webhost. </p>
<p><strong>Duplicate tweet</strong><br />
Some people have tried running my example post_tweet.php script and got a 403 error. This generally means that you have sent a duplicate tweet. There is a time limit after which duplicate tweets are allowed, but I&#8217;ve never been able to get an answer from Twitter HQ on what it is. If you get a 403 error when posting a tweet with the API, check your timeline to make sure this is not a duplicate of what you have already sent recently. </p>
<p><strong>tmhOAuth files not found</strong><br />
There are only 2 files from the tmhOAuth files that you must use: cacert.pem and tmhOAuth.php. They both MUST be in the same directory and you have to use a valid path when you require or include tmhOAuth.php. </p>
<p><strong>Invalid tmhOAuth files</strong><br />
I include the latest copies of the tmhOAuth files in the zip for the ebook, but some people prefer to download them from their home site at <a href="https://github.com/themattharris/tmhOAuth">https://github.com/themattharris/tmhOAuth</a>. That is fine, but you have to make sure you download clean copies of these files. I worked with someone for quite a while until we figured out that he had downloaded the entire page from Github, including the HTML, when he downloaded them. </p>
<p>I&#8217;m still interested in hearing about any problems you have with the ebook code. I want to make sure this is as clean as possible. <a href="mailto:140dev@gmail.com">Email me</a> if you can&#8217;t get it to work. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/most-common-twitter-oauth-programming-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Future plans for the 140dev framework</title>
		<link>http://140dev.com/twitter-api-programming-blog/future-plans-for-the-140dev-framework/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/future-plans-for-the-140dev-framework/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 13:15:02 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[140dev Source Code]]></category>
		<category><![CDATA[Twitter Database Programming]]></category>
		<category><![CDATA[Twitter OAuth]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1984</guid>
		<description><![CDATA[Now that the switch to the Twitter API version 1.1 is getting closer, I&#8217;ve been asked if it will break the 140dev Framework. The requirement to switch to OAuth for API requests won&#8217;t affect the Streaming API, so version 1.1 won&#8217;t have any immediate impact on the the 140dev framework. Twitter has assured us that [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Now that the switch to the Twitter API version 1.1 is getting closer, I&#8217;ve been asked if it will break the 140dev Framework. The requirement to switch to OAuth for API requests won&#8217;t affect the Streaming API, so version 1.1 won&#8217;t have any immediate impact on the the 140dev framework. Twitter has assured us that the Streaming API will still support Basic Authentication. I plan on converting the framework code to OAuth anyway as part of a long planned upgrade. I&#8217;ve learned a lot about performance enhancements in tweet collection since the framework was released, and I want to start building those improvements into the open source code for the framework. Right now I&#8217;m focused on writing a book on OAuth programming, but in a couple of months you can expect a new version of the framework to be released. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/future-plans-for-the-140dev-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Twitter API Console tool</title>
		<link>http://140dev.com/twitter-api-programming-blog/new-twitter-api-console-tool/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/new-twitter-api-console-tool/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 18:10:35 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Twitter API Console]]></category>
		<category><![CDATA[Twitter API Tutorials]]></category>
		<category><![CDATA[Twitter OAuth]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1943</guid>
		<description><![CDATA[My Twitter OAuth ebook closes with the source code for an API Console application. This app got such a favorable response that I decided to enhance it and put it out as a free tool. I have found this to be an invaluable debugging aid when testing an API request. It lets you enter just [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>My <a href="http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-single-user-twitter-oauth-programming/">Twitter OAuth ebook</a> closes with the source code for an API Console application. This app got such a favorable response that I decided to enhance it and put it out as a <a href="http://140dev.com/twitter-api-console/">free tool</a>. I have found this to be an invaluable debugging aid when testing an API request. It lets you enter just the description of the request and quickly see the complete response without having to write any test code.</p>
<p style="text-align: center;"><a href="http://140dev.com/twitter-api-console"><img class="aligncenter" style="border: 1px solid black;" title="Twitter API console" src="/blog_images/console.png" alt="" width="400" height="448" /></a></p>
<p>The tool is pretty obvious to use, but I also added a <a href="http://140dev.com/download/140dev_api_console_users_guide.pdf">users guide</a> to cover some of the features you might not notice, such as the ability to share the <a href="http://140dev.com/twitter-api-console/?method=GET&amp;url=1.1/show/users&amp;screen_name=justinbieber">URL </a>for an API request. This lets you easily demonstrate a bug in the API to Twitter HQ, or show a fellow developer how to do a specific API task.</p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/new-twitter-api-console-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting email addresses from OAuth login</title>
		<link>http://140dev.com/twitter-api-programming-blog/getting-email-addresses-from-oauth-login/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/getting-email-addresses-from-oauth-login/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 14:44:43 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Email collection]]></category>
		<category><![CDATA[Twitter OAuth]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1896</guid>
		<description><![CDATA[For years now there has been a steady stream of requests, demands, pleas, and threats over the issue of getting user email addresses from the Twitter API. This thread is just one of many on the subject. The simple fact is that it ain&#8217;t gonna happen. No way, not ever. It&#8217;s pretty funny to see [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>For years now there has been a steady stream of requests, demands, pleas, and threats over the issue of getting user email addresses from the Twitter API. This <a href="https://dev.twitter.com/discussions/4019">thread</a> is just one of many on the subject. The simple fact is that it ain&#8217;t gonna happen. No way, not ever. It&#8217;s pretty funny to see how angry devs get when they discover this. The better part is the reasons they give for having to get these addresses. They just want to get to know their users better. </p>
<p>It&#8217;s hard to say never when it comes to Twitter&#8217;s decision making process, but on this issue, I think never is never. Just give it up guys. </p>
<p>The solution is easy. If you want to get a user&#8217;s email address, just ask for it. We do that for this site, and get a pretty good response. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/getting-email-addresses-from-oauth-login/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Picking up the pieces after 1.1 breaks client-side code</title>
		<link>http://140dev.com/twitter-api-programming-blog/picking-up-the-pieces-after-1-1-breaks-client-side-code/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/picking-up-the-pieces-after-1-1-breaks-client-side-code/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 12:20:56 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[JS coding for Twitter]]></category>
		<category><![CDATA[Twitter OAuth]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1891</guid>
		<description><![CDATA[I&#8217;ve been having some Twitter discussions with devs about the breakage version 1.1 will cause for client-side Twitter apps. The simplest way to say it is that every page that uses direct Javascript calls to the Twitter API will break when version 1.0 is turned off in March. The only way you will be able [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve been having some Twitter discussions with devs about the breakage version 1.1 will cause for client-side Twitter apps. The simplest way to say it is that every page that uses direct Javascript calls to the Twitter API will break when version 1.0 is turned off in March. The only way you will be able to call the API will be with OAuth tokens. That is true for *ALL* API calls, even search. I don&#8217;t think people realize this yet, but they will when the switch to 1.1 happens. </p>
<p>So does this mean that Twitter development is done, and devs will just move elsewhere? No way. Devs go where the customers are, and the customers are using Twitter in increasing numbers. I do development as a business and as a businessman, I go where the money is. That is still Twitter. </p>
<p>The reality is that adapting to version 1.1 is not a big deal. The real change for client-side developers is that they will have to call their server with the API request, and let it call Twitter and return the results. In the end, the JS code is still making an Ajax request to a server and getting back JSON. The only difference will be that the server they call is one they control instead of calling Twitter&#8217;s API servers. Not a huge difference. Not enough to make devs leave all these users behind or give up coding. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/picking-up-the-pieces-after-1-1-breaks-client-side-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter API Ebook: Single-user Twitter OAuth Programming</title>
		<link>http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-single-user-twitter-oauth-programming/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-single-user-twitter-oauth-programming/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 22:41:31 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Twitter API Tutorials]]></category>
		<category><![CDATA[Twitter OAuth]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1825</guid>
		<description><![CDATA[It&#8217;s time to start converting your code to the Twitter API version 1.1. I&#8217;ve been using it for a while now, and it seems solid. Twitter is still saying that version 1.0 will be turned off on March 5th, so we all have to begin the upgrade process. (Update: The turn-off date for API 1.0 [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="/member"><img class="alignleft" src="/blog_images/oauth_ebook_cover_small.png" alt="" width="200" height="251" /></a> It&#8217;s time to start converting your code to the <strong>Twitter API version 1.1</strong>. I&#8217;ve been using it for a while now, and it seems solid. Twitter is still saying that version 1.0 will be turned off on March 5th, so we all have to begin the upgrade process. (Update: The turn-off date for API 1.0 has been extended to May 7th.)</p>
<p>For a long time now I&#8217;ve been pointing people to my Hello OAuth tutorial as the best way to get started with OAuth. That will be obsoleted soon, so I&#8217;ve written up this new ebook to give people an expanded starting point. It covers everything you need to use OAuth from a single Twitter account. It is available as a <a href="/member">free PDF download on our members page</a>. You can also get the source code for all the examples in the ebook there as well.  </p>
<p>Here are the topics covered:</p>
<ul>
<li>Create your first Twitter application</li>
<li>Set up OAuth tokens for single-user access</li>
<li>Connect to the Twitter API with the tmhOAuth library</li>
<li>Posting tweets through the API</li>
<li>Looking up complete account details for any Twitter user</li>
<li>Converting Twitter API docs into working PHP code</li>
<li>Debug and test any API request with your own API console</li>
</ul>
<p>I&#8217;ve also created a new <a href="https://groups.google.com/d/forum/140dev-oauth-discussion">Google Group</a> for questions and discussions of the issues raised by this ebook. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/twitter-api-ebook-single-user-twitter-oauth-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aligning our Twitter code with our politics: UniteBlue.com</title>
		<link>http://140dev.com/twitter-api-programming-blog/aligning-our-twitter-code-with-our-politics-uniteblue-com/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/aligning-our-twitter-code-with-our-politics-uniteblue-com/#comments</comments>
		<pubDate>Wed, 12 Sep 2012 14:23:03 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Twitter Engagement Campaign]]></category>
		<category><![CDATA[Twitter Politics]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1782</guid>
		<description><![CDATA[For the last couple of years we&#8217;ve been helping clients with a wide range of Twitter engagement tools. We&#8217;ve helped non-profits, political campaigns, and businesses identify and engage with the best Twitter accounts to help spread their message. Now we&#8217;ve committed our efforts to a free site that helps progressives unite for political action. UniteBlue.com [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>For the last couple of years we&#8217;ve been helping clients with a wide range of Twitter engagement tools. We&#8217;ve helped non-profits, political campaigns, and businesses identify and engage with the best Twitter accounts to help spread their message. Now we&#8217;ve committed our efforts to a free site that helps progressives unite for political action. <a href="http://uniteblue.com">UniteBlue.com</a> combines a great set of Twitter accounts on the left with the same type of engagement tools we&#8217;ve perfected in our client work. Our first <a href=" http://www.prweb.com/releases/2012/9/prweb9887113.htm">press release</a> on the site has the details. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/aligning-our-twitter-code-with-our-politics-uniteblue-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Follower engagement is the whole point</title>
		<link>http://140dev.com/twitter-api-programming-blog/follower-engagement-is-the-whole-point/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/follower-engagement-is-the-whole-point/#comments</comments>
		<pubDate>Tue, 31 Jul 2012 18:30:44 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Twitter Followers]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1778</guid>
		<description><![CDATA[My latest ProgrammableWeb.com column is up, and it discusses the difference between follower quality and quantity. It&#8217;s time that the race for high follower count change into a desire for more engagement.]]></description>
			<content:encoded><![CDATA[<p></p><p>My latest <a href="http://blog.programmableweb.com/2012/07/31/twitter-api-best-practices-follower-quality-vs-quantity/">ProgrammableWeb.com</a> column is up, and it discusses the difference between follower quality and quantity. It&#8217;s time that the race for high follower count change into a desire for more engagement. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/follower-engagement-is-the-whole-point/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
