<?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>digital matter &#187; mixiアプリ</title>
	<atom:link href="http://blog.loadlimits.info/tag/mixi%e3%82%a2%e3%83%97%e3%83%aa/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.loadlimits.info</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 06 Feb 2012 13:27:58 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>リバースProxy環境でのmixiアプリのOAuth</title>
		<link>http://blog.loadlimits.info/2009/11/%e3%83%aa%e3%83%90%e3%83%bc%e3%82%b9proxy%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aemixi%e3%82%a2%e3%83%97%e3%83%aa%e3%81%aeoauth/</link>
		<comments>http://blog.loadlimits.info/2009/11/%e3%83%aa%e3%83%90%e3%83%bc%e3%82%b9proxy%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aemixi%e3%82%a2%e3%83%97%e3%83%aa%e3%81%aeoauth/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 15:32:11 +0000</pubDate>
		<dc:creator>hotpi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mixiアプリ]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.loadlimits.info/2009/11/%e3%83%aa%e3%83%90%e3%83%bc%e3%82%b9proxy%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aemixi%e3%82%a2%e3%83%97%e3%83%aa%e3%81%aeoauth/</guid>
		<description><![CDATA[CakePHPでmixiアプリのOAuthを処理させる方法は以下のサイト参照。ホントにシンプルでわかりやすい解説。 [cakephp] mixiアプリのOAuthのリクエストを受け取る &#8211; 「のーぶるじゃすぱー」略して「のぶじゃす」のBLOG 通常の環境ではこのまま実装すればOK。 で、このあとロードバランサーの入ったサーバに持ってきたらOAuthが正しく認証されない。 OAuthRequestのhttp_urlを見てみると、 http://192.168.0.2:8001:80//api/hoge/hoge/… という悲しいことになっていて、これがどうも問題のようだと。というか、ホスト：ポート：ポートってどういうことだ… 本来ならもちろん、 http://mixiapp.sample.com:80/api/hoge/hoge/… みたいなアドレスになっていないといけない。 ちなみに送信側はmixiアプリのサンプルそのまんまな感じのJavaScript var params = {}; params[gadgets.io.RequestParameters.REFRESH_INTERVAL] = 0; params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; var url = "http://mixiapp.sample.com/api/hoge/hoge/"; gadgets.io.makeRequest(url, func, params); 解決策は function validateOAuth () { $get = $_GET; unset($get['url']); $http_url = 'http://mixiapp.sample.com:80/' . ltrim($_SERVER['REQUEST_URI'],'/'); $request = OAuthRequest::from_request(null, $http_url, array_merge($get, $_POST)); if [...]]]></description>
			<content:encoded><![CDATA[<p>CakePHPでmixiアプリのOAuthを処理させる方法は以下のサイト参照。ホントにシンプルでわかりやすい解説。</p>
<p><a href="http://test.noble-jasper.com/blog/2009/08/cakephp-mixioauth.html" target="_blank">[cakephp] mixiアプリのOAuthのリクエストを受け取る &#8211; 「のーぶるじゃすぱー」略して「のぶじゃす」のBLOG</a></p>
<p>通常の環境ではこのまま実装すればOK。</p>
<p>で、このあとロードバランサーの入ったサーバに持ってきたらOAuthが正しく認証されない。</p>
<p>OAuthRequestのhttp_urlを見てみると、</p>
<blockquote><p>http://192.168.0.2:8001:80//api/hoge/hoge/…</p>
</blockquote>
<p>という悲しいことになっていて、これがどうも問題のようだと。というか、ホスト：ポート：ポートってどういうことだ…</p>
<p>本来ならもちろん、</p>
<blockquote><p>http://mixiapp.sample.com:80/api/hoge/hoge/…</p>
</blockquote>
<p>みたいなアドレスになっていないといけない。</p>
<p>ちなみに送信側はmixiアプリのサンプルそのまんまな感じのJavaScript</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f9cc1684-ee04-4e83-b0aa-070f94da3be5" class="wlWriterEditableSmartContent">
<pre name="code" class="js">var params = {};
params[gadgets.io.RequestParameters.REFRESH_INTERVAL] = 0;
params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
var url = "http://mixiapp.sample.com/api/hoge/hoge/";
gadgets.io.makeRequest(url, func, params);
</pre>
</div>
<p>解決策は</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ee9beadb-9dbe-4811-bc01-e61a7a00d780" class="wlWriterEditableSmartContent">
<pre name="code" class="php">function validateOAuth () {

    $get = $_GET;
    unset($get['url']);
    $http_url = 'http://mixiapp.sample.com:80/' . ltrim($_SERVER['REQUEST_URI'],'/');
    $request = OAuthRequest::from_request(null, $http_url, array_merge($get, $_POST));
    if ($_GET['oauth_consumer_key'] == 'mixi.jp') {
        @$signature_valid = $this-&gt;MixiAppliOauth-&gt;check_signature($request, null, null, $get["oauth_signature"]);
    }

    if ($signature_valid == true || Configure::read('debug')) {

        $this-&gt;oauth_valid = true;
        $this-&gt;viewer_id   = $get['opensocial_viewer_id'];
        $this-&gt;owner_id    = $get['opensocial_owner_id'];

        return $get;

    }

    return false;

}
</pre>
</div>
<p>というように、from_requestの第二引数にURLを指定してやればOK。なぜかスラッシュが２つ付いていたので削って付けなおしてます。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadlimits.info/2009/11/%e3%83%aa%e3%83%90%e3%83%bc%e3%82%b9proxy%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aemixi%e3%82%a2%e3%83%97%e3%83%aa%e3%81%aeoauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

