<?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>SteveLove.org &#187; wordpress</title>
	<atom:link href="http://stevelove.org/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://stevelove.org</link>
	<description>Code, Literature and Other Worthless Pursuits</description>
	<lastBuildDate>Mon, 28 Jun 2010 21:53:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>How To: WordPress.com and the Simple OpenID PHP Class</title>
		<link>http://stevelove.org/2008/08/25/how-to-wordpresscom-and-the-simple-openid-php-class/</link>
		<comments>http://stevelove.org/2008/08/25/how-to-wordpresscom-and-the-simple-openid-php-class/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 02:22:29 +0000</pubDate>
		<dc:creator>Steve Love</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://stevelove.org/?p=19</guid>
		<description><![CDATA[[Note: This post contains outdated information. Please visit the project page here for the latest information.] In my previous post, I told you how to get the Simple OpenID PHP Class working with Yahoo. Now we&#8217;re going to focus on WordPress.com. This turned out to be very easy once I realized the problem. The Problem: [...]]]></description>
			<content:encoded><![CDATA[<p><big><b>[Note: This post contains outdated information. Please visit the project page <a href="http://stevelove.org/projects/dope-openid/">here</a> for the latest information.]</b></big></p>
<p>In my <a href="http://www.stevelove.org/2008/08/how-to-yahoo-and-the-simple-openid-php-class/">previous post</a>, I told you how to get the Simple OpenID PHP Class working with Yahoo. Now we&#8217;re going to focus on WordPress.com. This turned out to be very easy once I realized the problem. <span id="more-19"></span></p>
<p>The Problem:<br />
When you try to authenticate a WordPress OpenID using Simple OpenID you&#8217;re redirected to the correct URL, but it just displays your blog page rather than asking you to log in.</p>
<p>The Solution:<br />
After a closer look at the URL we find the problem. The WordPress OpenID server URL takes the form <span class="code">http://<em>username</em>.wordpress.com/?openidserver=1</span>. Fair enough. But the query string that we&#8217;ve appended with our request parameters also begins with a <span class="code">?</span> to set it apart from the rest of the URL. So, all we need to do is check the OpenID server URL we found during discovery for an existing query string. If it already has one, we&#8217;ll append our parameters with an <span class="code">&#038;</span>, otherwise we&#8217;ll use the <span class="code">?</span> as usual.</p>
<p><!--more--></p>
<p>Let&#8217;s change the <span class="code">GetRedirectURL</span> method to the following.</p>
<p>[php]<br />
function GetRedirectURL(){<br />
    $params = array();<br />
    $params['openid.return_to'] = urlencode($this-&gt;URLs['approved']);<br />
    if($this-&gt;version == &quot;2.0&quot;){<br />
        $params['openid.ns'] = urlencode($this-&gt;openid_ns);<br />
        $params['openid.claimed_id'] = urlencode($this-&gt;openid_url_identity);<br />
        $params['openid.realm'] = urlencode($this-&gt;URLs['trust_root']);<br />
    }else{<br />
        $params['openid.trust_root'] = urlencode($this-&gt;URLs['trust_root']);<br />
    }<br />
    $params['openid.mode'] = &#8216;checkid_setup&#8217;;<br />
    $params['openid.identity'] = urlencode($this-&gt;openid_url_identity);</p>
<p>    if (isset($this-&gt;fields['required'])<br />
      &amp;&amp; (count($this-&gt;fields['required']) &gt; 0)) {<br />
        $params['openid.sreg.required'] = implode(&#8216;,&#8217;,$this-&gt;fields['required']);<br />
    }<br />
    if (isset($this-&gt;fields['optional'])<br />
      &amp;&amp; (count($this-&gt;fields['optional']) &gt; 0)) {<br />
        $params['openid.sreg.optional'] = implode(&#8216;,&#8217;,$this-&gt;fields['optional']);<br />
    }<br />
    if(strstr($this-&gt;URLs['openid_server'], &quot;?&quot;)){<br />
        $urlJoiner = &quot;&amp;&quot;;<br />
    }else{<br />
        $urlJoiner = &quot;?&quot;;<br />
    }<br />
    return $this-&gt;URLs['openid_server'] . $urlJoiner . $this-&gt;array2url($params);<br />
}<br />
[/php]</p>
<p>And that&#8217;s it! Our WordPress OpenID should now authenticate properly with Simple OpenID. If it still doesn&#8217;t seem to work right, you can <a href="http://www.stevelove.org/projects/openid/class.openid.phps">download</a> the version that I&#8217;m using and see if that helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevelove.org/2008/08/25/how-to-wordpresscom-and-the-simple-openid-php-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

