[PHP]–with-curlwrapper[counfigure]

やっと、直った・・・

ずっと何がわるくて、file_get_contentsが使えないのか全く分からなかった・・・orz

–with-curlwrapperを付けてconfigureをしたことが、間違いだったorz

以後、弾みで書くのは気を付けよう・・・

スポンサーリンク

[mixi]ミクシーページアプリ・・・[page]

お仕事関係でmixiページアプリを作ることになったよ;_;

とりあえず、個人でパートナー登録・・・
クレカがいるのかorz
とか思ったりしながら登録!

※あと、法人の場合は登記簿を郵送しないといけないとか・・・
だから敷居が高すぎてみんなやる気がなくなるんだよとか思ったりもしてる・・・
http://developer.mixi.co.jp/about-platform/com/partner/

とにかく色々触りながらやってみないとわからないコトだらけで、正直辛かった;_;
※やりたくない気持ちもあって余計・・・

とりあえず、mixiデベロッパーの仕様書?はかなり読み辛い。
まだ、Facebookのデベロッパーの方がまし。

◆mixiページアプリからの投稿は3パターン

以下に書いてある・・・
http://developer.mixi.co.jp/page-apps/spec/page-api/

methodは、POST
URLは、http://api.mixi-platform.com/2/pages/[Page-ID]/feeds
[Page-ID]はmixiページのID

1.タイトルと本文のみの投稿

Content-Type:application/json
本家でこんな風にしなよとかかれています。

{
  "contentUri" : "http://www.application.com/id=12345",
  "title" : "タイトル",
  "body" : "本文",
  "urls" : {
    "pcUrl" : "http://mixi.jp/run_page_appli.pl?page_id=0&module_id=0&appParams=%7B%22uid%22%3A%221569%22%7D",
    "mobileUrl" : "",
    "smartphoneUrl" : "",
  },
  "sourceId" : "3"
}

実際に上記のような書き方はしません。
実際は以下のような感じ

<?php
    $page_id = '123456';
    $url = 'http://api.mixi-platform.com/2/pages/' . $page_id . '/feeds';
    $arr_data = array(
        'title' => タイトル文字列,
        'body' => 本文,
    );
    $content = json_encode($arr_data);
    $opt = array(
        'http' => array(
        'method' => 'POST',
        'header' => 'Authorization: OAuth '.$access_token."\r\n".
                    'Content-Type: application/json',
        'ignore_errors'=>true,
        'content' => $content,
    ));
    $data = file_get_contents($url, false, stream_context_create($opt));
    //成功するとjson形式で返りがある
    print_r(json_decode($data, ture));
?>

2.1に加え、イメージのURL指定によるイメージの投稿

Content-Type:application/json
本家でこんな風にしなよとかかれています。

{
  "contentUri" : "http://www.application.com/id=12345",
  "title" : "タイトル",
  "body" : "本文",
  "urls" : {
    "pcUrl" : "http://mixi.jp/run_page_appli.pl?page_id=0&module_id=0&appParams=%7B%22uid%22%3A%221569%22%7D",
    "mobileUrl" : "",
    "smartphoneUrl" : "",
  },
  "sourceId" : "3",
  "imageUrls" : [
    "http://www.imageurl.com/image/photo1.jpeg"
  ]
}

実際に上記のような書き方はしません。
実際は以下のような感じ

<?php
    $page_id = '123456';
    $url = 'http://api.mixi-platform.com/2/pages/' . $page_id . '/feeds';
    $arr_data = array(
        'title' => タイトル文字列,
        'body' => 本文,
        'imageUrls' => array(
            'http://hogehoge.com/hage.jpg'
        ),
    );
    $content = json_encode($arr_data);
    $opt = array(
        'http' => array(
        'method' => 'POST',
        'header' => 'Authorization: OAuth '.$access_token."\r\n".
                    'Content-Type: application/json',
        'ignore_errors'=>true,
        'content' => $content,
    ));
    $data = file_get_contents($url, false, stream_context_create($opt));
    //成功するとjson形式で返りがある
    print_r(json_decode($data, ture));
?>

ここで気をつけなければならないところは、imageUrlsはjpgかpngでなければならないということです。しかも、拡張子がjpgかpngしかだめです(最後が.jpgまたは.pngのみ受け付ける)。プログラムから吐かれたばあいのIDなどがついている場合はm無効となります。

3.1に加え、サーバー内のローカルイメージの投稿

Content-Type:multipart/form-data
本家でこんな風にしなよとかかれています。

boundary文字列
Content-Disposition: form-data; name="request"
{
  "contentUri" : "http://www.application.com/id=12345",
  "title" : "タイトル",
  "body" : "本文",
  "urls" : {
    "pcUrl" : "http://mixi.jp/run_page_appli.pl?page_id=0&module_id=0&appParams=%7B%22uid%22%3A%221569%22%7D",
    "mobileUrl" : "",
    "smartphoneUrl" : "",
  },
  "sourceId" : "3",
}
boundary文字列
Content-Disposition: form-data; name="image1"; filename="添付画像1.jpg"
Content-Type: image/jpeg
.......添付画像のバイナリデータ

実際に上記のような書き方はしません。
実際は以下のような感じ

<?php
    $page_id = '123456';
    $url = 'http://api.mixi-platform.com/2/pages/' . $page_id . '/feeds';

    $title = 'タイトル';
    $body = '本文の内容';
    $image_file = "/tmp/hoge.jpg";

    $boundary = "".md5(microtime());

    $content = "--".$boundary."\r\n";
    $content.= 'Content-Disposition: form-data; name="request"'."\r\n";
    $content.= "\r\n";
    $content.= json_encode(
                array(
                    "title" => $title,
                    "body" => $body,
               ));
    $content.= "\r\n";
    $content.= "--".$boundary."\r\n";
    $content.= 'Content-Disposition: form-data; name="image1"; filename="' . basename($image_file) . '"'."\r\n";
    $content.= 'Content-Type: image/jpeg'."\r\n";
    $content.= "\r\n";
    $content.= file_get_contents($image_file)."\r\n";
    $content.= "--".$boundary."--";

    $opt = array(
        'http' => array(
        'method' => 'POST',
        'header' => 'Authorization: OAuth '.$access_token."\r\n".
                    'Content-Type: multipart/form-data; boundary='.$boundary;
        'ignore_errors'=>true,
        'content' => $content,
    ));
    $htp['header'] .= "\r\n".'Content-Type: application/json';
    $data = file_get_contents($url, false, stream_context_create($opt));
?>

と、こんな感じで書いて行きます。
実際はもう少しurlencodeしたりとかするんですけどね・・・

あとは、バグっぽいのが、あったけど直ったみたい??
bodyに改行コードがあると投稿できないとか・・・

 
※余談だけど、コメントの投稿でも改行コードを受け付けてくれない・・・
何故か\rははじかれないんだよね・・・でも、mixiページには、改行は反映されていないんだよね・・・ふしぎだなぁ~

スポンサーリンク

[wordpress]google analytics埋め込みプラグイン[plugin]

HDDがお亡くなりになってから、さっそくgoogle analyticsを埋め込むプラグインを作り直しました。

こちら

一応ktai-styleにも対応しています。

今作っているのが、ktai-styleに自動で埋め込めるadsense・・・
なんか険しい道のりになりそうでもうあきらめ気味orz

スポンサーリンク

HDDが死んだ・・・そして最初から鯖作り直し

HDDの価格が高騰している中、HDDが壊れたorz
仕方が無いのでHDDを購入して、
CentOS6、Apache2.2.21、PHP5.3.8、MySQL5.5.17、Postgresql9.1.1
を入れました、、、

OSの入れ方が変わったおかげで十数回インストールしなしてみたり、、
Mysql5.5系からcmakeで入れるようになったために、またしても入れ方が分からず何回か間違った入れ方をしていたし、、でどこかのblogでcmakeのオプションの書き方が書いてあったのでそれを参考に調べなおして入れることができたよ;_;

あとは、ちまちま、postfixとか設定しなおしたりと、、
postfixとかは正規表現でメールアドレスをの割り振れるように設定とか

Postgresql9.1系から簡単にクラスターが出来るとか・・・

スポンサーリンク