[Facebook]Fbページのカバー画像[メモ]

かなり久しぶりの更新です。

Facebookページのカバー画像についてちょっとしたメモを・・・

graph APIでカバー写真のデータを取得できるのですが、サイズが合わないものがあります。。。
現在のカバー写真のサイズは、851×315で表示されるようになっているらしい。

graph APIで取得したイメージは丁度のものから、縦サイズが大きいものがあったりします。
縦サイズが大きい場合、大抵cover.offset_yに値が入っています。

で、ピクセル的に何ピクセルのoffsetかというところになるんですが、、、

その計算式をメモしておきます。。

まず、ソースの縦横サイズを取得
$size = getimagesize($data[‘cover’][‘source’]);

で、オフセットの取得
$offset_y = ceil($data[‘cover’][‘offset_y’]/100*((851/$size[0]*$size[1])-315));

$url = str_replace(“/s720x720/”, “/c0.”.$offset_y.”.851.315/p851x315/”, $data[‘cover’][‘source’]);

とりあえずここまで・・・

スポンサーリンク

[メモ]PHPからmongoDBへbigintのinsertの仕方

またしても、私的メモです。

こちらのマニュアル通りこれを使うとbigintが入ります・・・
mongoInt64

■insertの仕方

//接続
$obj_connection = new Mongo();
//db選択
$db = $obj_connection->hoge_db;
//collection選択
$collection = $db->hoge_collection;
$collection->insert(array("id"=>new MongoInt64(220309509225197578)));

・コンソールでinsertされた値をみてみると以下の様に入っていることがわかる。
“id” : NumberLong(“220309509225197578”)

追記:
phpでの取得の仕方

//接続
$obj_connection = new Mongo();
//db選択
$db = $obj_connection->hoge_db;
//collection選択
$collection = $db->hoge_collection;
$collection->find(array("id"=>aray('$gt'=>new MongoInt64(220309509225197578))));

スポンサーリンク

[メモ]PHPでアップロード進捗状況がわかるらしい[未検証]

とりあえず、↓こんなのを見つけたので後で実験してみる。
セッションのアップロード状況

コレができるなら、もう少し面白そうなuploaderが作れるのでは?とか思ったりします。

追記:
php5.4.0以降から使えるのか・・・・
ちょっとめんどうなので、またの機会だな・・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ページには、改行は反映されていないんだよね・・・ふしぎだなぁ~

スポンサーリンク