[Titanium Mobile] AndroidとWordPressとのやりとりでCookie rejectedされる

wordpress_android_cookie-rejectedWordPressと連携するAndroidアプリを作っている時に「Cookie rejected」の表示が出るので、気になって調べてみた。

環境: Titanium SDK 3.1.0.GA, Android 2.3.3(API 10), WordPress 3.5.0

表示されるWarningはこれ

W/ResponseProcessCookies( 4304): Cookie rejected: "BasicClientCookie[version=0,name=wordpress_eb9dbbb,domain=hoge.net,path=/wp-content/plugins,expiry=null]". Illegal path attribute "/wp-content/plugins".
W/ResponseProcessCookies( 4304): Cookie rejected: "BasicClientCookie[version=0,name=wordpress_eb9dbbb,domain=hoge.net,path=/wp-admin,expiry=null]". Illegal path attribute "/wp-admin".

PHP側でsetcookieするときに表示される。

アプリからの通信は特定のURLに送信して、プラグインの中でフックして処理をするやり方をしているので、「ADMIN_COOKIE_PATH」と「PLUGINS_COOKIE_PATH」をandroidアプリからの通信の場合は別の値にする必要があるみたい。

wp-load.php → wp-config.php → wp-settings.php → default-constants.php
と実行され、プラグインを読み込む前に定義されてしまうので、wp-config.phpに下記を追記。

if (!empty($_REQUEST['android']) ) {
    define( 'ADMIN_COOKIE_PATH', '/');
    define( 'PLUGINS_COOKIE_PATH', '/');
}

もちろん「android」というパラメータはアプリから送信する必要あり。

 

< Related Posts >