<?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; CakePHP</title>
	<atom:link href="http://blog.loadlimits.info/tag/cakephp/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>
		<item>
		<title>CakePHPのPaginator逆ルーティング設定をビューで行う</title>
		<link>http://blog.loadlimits.info/2009/07/cakephp%e3%81%aepaginator%e9%80%86%e3%83%ab%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0%e8%a8%ad%e5%ae%9a%e3%82%92%e3%83%93%e3%83%a5%e3%83%bc%e3%81%a7%e8%a1%8c%e3%81%86/</link>
		<comments>http://blog.loadlimits.info/2009/07/cakephp%e3%81%aepaginator%e9%80%86%e3%83%ab%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0%e8%a8%ad%e5%ae%9a%e3%82%92%e3%83%93%e3%83%a5%e3%83%bc%e3%81%a7%e8%a1%8c%e3%81%86/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 02:35:16 +0000</pubDate>
		<dc:creator>hotpi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[解決]]></category>
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://blog.loadlimits.info/2009/07/cakephp%e3%81%aepaginator%e9%80%86%e3%83%ab%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0%e8%a8%ad%e5%ae%9a%e3%82%92%e3%83%93%e3%83%a5%e3%83%bc%e3%81%a7%e8%a1%8c%e3%81%86/</guid>
		<description><![CDATA[CakePHP 1.2で、/hoge/Controller/page:1とかにしたページングがしたかったので調べた。 超参考になったのはこちらの記事。スライドの26～27ページあたり。逆ルーティング。 極める routes.php (CakePHP 1.2) : akiyan.com routes.phpでゴチャゴチャにしたURLに対してもPaginatorにOptionsを渡してやればできるという話だったので実験。 Controllerのvar $paginateに書いてみたのだけどなぜか効かない… 色々試した末、viewに書くことで解決。 &#60;?php $paginator-&#62;options(array('url'=&#62;array( 'controller' =&#62; 'pages', 'action' =&#62; 'display', 'target' =&#62; 'hoge', ))); ?&#62; routesはこれ。 Router::connect('/hoge/pages/*', array('controller' =&#62; 'pages', 'action' =&#62; 'display', 'target' =&#62; 'hoge')); これはこれで使い勝手いいかもしれんね。]]></description>
			<content:encoded><![CDATA[<p>CakePHP 1.2で、/hoge/Controller/page:1とかにしたページングがしたかったので調べた。</p>
<p>超参考になったのはこちらの記事。スライドの26～27ページあたり。逆ルーティング。</p>
<p><a href="http://www.akiyan.com/blog/archives/2009/05/routesphp-cakephp-12.html" target="_blank">極める routes.php (CakePHP 1.2) : akiyan.com</a></p>
<p>routes.phpでゴチャゴチャにしたURLに対してもPaginatorにOptionsを渡してやればできるという話だったので実験。</p>
<p>Controllerのvar $paginateに書いてみたのだけどなぜか効かない…</p>
<p>色々試した末、viewに書くことで解決。</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:5a60cce2-8138-4fd6-b0bd-89dc9554308f" class="wlWriterEditableSmartContent">
<pre name="code" class="php">&lt;?php
$paginator-&gt;options(array('url'=&gt;array(
    'controller' =&gt; 'pages',
    'action' =&gt; 'display',
    'target' =&gt; 'hoge',
)));
?&gt;
</pre>
</div>
<p>routesはこれ。</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:98fe2d64-92cb-4852-9817-f93e11007a5c" class="wlWriterEditableSmartContent">
<pre name="code" class="py">Router::connect('/hoge/pages/*', array('controller' =&gt; 'pages', 'action' =&gt; 'display', 'target' =&gt; 'hoge'));</pre>
</div>
<p>これはこれで使い勝手いいかもしれんね。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadlimits.info/2009/07/cakephp%e3%81%aepaginator%e9%80%86%e3%83%ab%e3%83%bc%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0%e8%a8%ad%e5%ae%9a%e3%82%92%e3%83%93%e3%83%a5%e3%83%bc%e3%81%a7%e8%a1%8c%e3%81%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

