ラベル GAE の投稿を表示しています。 すべての投稿を表示
ラベル GAE の投稿を表示しています。 すべての投稿を表示

2013年10月20日日曜日

ストリートビュー(static image)にばんてふを適用する謎テクニック

ストビューにばんてふを適用してみた。



2013年10月15日火曜日

GAEからblogger API v3を使用(OAuth)

bloggerに移行したということで、GAEのcronでblogger API v3を使ってブログ更新するようにしました。

v3から基本的には、OAuthで認証ということで、その辺の手順を中心に忘れないようにメモ。


Google Cloud ConsoleでBlogger API v3を有効化















Blogger API の「無効」ボタンを押すと下のようなページが表示されるので送信ボタンを押す。























数営業日ぐらいでGoogleさんからActivateするためのメールが送られてくるので、
そのメールの中のリンクをクリックすると、Blogger APIが有効になる。
















Google Cloud Consoleでアプリを登録する。















「アプリを登録」をクリック















「ネイティブ」を選択し登録
















クライアントIDとクライアントシークレットをメモ


Request Tokenの取得

Request Tokenを取得するためにこんな感じのHTMLを書いてブラウザで開く

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<form method="get" action="https://accounts.google.com/o/oauth2/auth">
<input type="hidden" name="response_type" value="code">
<input type="hidden" name="redirect_uri" value="urn:ietf:wg:oauth:2.0:oob">
client_id:<input type="text" name="client_id" value="[クライアントID]"><br>
scope:<input type="text" name="scope" value="https://www.googleapis.com/auth/blogger"><br>
<input type="submit">
</form>
</body>
</html>









送信をクリック















BlogのユーザでGoogleにログインして、「承認する」をクリック

















「コード」をメモしておく


Access Token、Refresh Tokenの取得

Access Token、Refresh Tokenを取得するためにこんな感じのHTMLを書いてブラウザで開く

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="https://accounts.google.com/o/oauth2/token">
code:<input type="text" name="code" value="code">
<input type="hidden" name="redirect_uri" value="urn:ietf:wg:oauth:2.0:oob">
<input type="hidden" name="grant_type" value="authorization_code">
client_id:<input type="text" name="client_id" value="[クライアントID]"><br>
client_secret:<input type="text" name="client_secret" value="[クライアントシークレット]"><br>
<input type="submit">
</form>

</body>
</html>









コードのところにRequest Tokenのところで取得した”コード”を
ペーストして送信ボタンを押す。











ブラウザにAccess TokenとRefresh Tokenが表示されるので、
Refresh Tokenをメモしておく




Access TokenのRefresh

blogger APIでブログを更新する際に、Access Tokenを指定する必要があるのですが、
Access Tokenには期限があるので、上記で取得したAccessTokenは使えません。
新たなAccess Tokenを取得するには、Refresh Tokenを使用します。

Javaだと下記のような感じのコードになります。


import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;


import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

・・・
 public String getAccessToken(String refreshToken, String clientId, String clientSecret) {
     String ret = "";
     try {
                URL url = new URL("https://accounts.google.com/o/oauth2/token");
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoOutput(true);
                connection.setRequestMethod("POST");

                List params = new ArrayList();
                params.add("refresh_token=" + refreshToken);
                params.add("client_id=" + clientId);
                params.add("client_secret=" + clientSecret);
                params.add("grant_type=refresh_token");
                OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
                String paramStr = "";
                for(String param:params) {
                 if(paramStr.length() > 0) {
              paramStr = paramStr + "&";
                 }
                 paramStr = paramStr+ param;
                }
                writer.write(paramStr);
                writer.close();
    
                if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    // OK
                 Reader reader = new InputStreamReader(connection.getInputStream());
                 JsonParser parser = new JsonParser();
                 JsonElement elem = parser.parse(reader);
                 if(elem != null) {
                 JsonObject obj = elem.getAsJsonObject();
                 if(obj != null) {
                  ret = obj.get("access_token").getAsString();
                 }
                 }
                 } else {
                    // Server returned HTTP error code.
                 }
            } catch (MalformedURLException e) {
                // ...
            } catch (IOException e) {
                 // ...
            }  
     return ret;
 }

・・・


2012年6月21日木曜日

続:BanchoAPI:ばんてふフレームAPIを作ったよ。ヨ・ロ・シ・ク

パラメータ1個追加しました。


png=true


API?なにそれホテル?っていう人にも使えるように。


<img src="http://m-labo.appspot.com/banchoapi/getimage?frameid=4&imageurl=http://upload.wikimedia.org/wikipedia/ja/thumb/3/3e/MtFuji_FujiCity.jpg/640px-MtFuji_FujiCity.jpg&png=true">







2012年6月20日水曜日

BanchoAPI:ばんてふフレームAPIを作ったよ。ヨ・ロ・シ・ク

��三浦大輔オフィシャルブログ「ハマの番長」http://ameblo.jp/daisuke18/
での予習をお勧めします。ブログに載ってる写真を幾つか見てみてください。)

暇だったので、BanchoAPI(ばんてふフレームAPI)を作った。

Bancho Image API

URL http://m-labo.appspot.com/banchoapi/getimage

パラメータ
frameid : 1~7
imageurl : 画像URL(サイズ1Mまで)
width : 出力イメージの幅(デフォルト640)
height : 出力イメージの高さ(デフォルト480)
callback : コールバック関数(JSONP時指定)

レスポンス(JSON)
{
result: 結果(true or false)
dataUrl: DataURL形式の画像データ
}

例
http://m-labo.appspot.com/banchoapi/getimage?frameid=4&imageurl=http://upload.wikimedia.org/wikipedia/commons/6/61/George_Bush_signs_the_Federal_Funding_Accountability_and_Transparency_Act_of_2006.jpg&width=400&height=300




Bancho Frame Thumbnail API

URL http://m-labo.appspot.com/banchoapi/getthumb

パラメータ
frameid : 1~7
width : 出力イメージの幅(デフォルト70)
height : 出力イメージの高さ(デフォルト70)
callback : コールバック関数(JSONP時指定)

レスポンス(JSON)
{
result: 結果(true or false)
dataUrl: DataURL形式の画像データ
}

例
http://m-labo.appspot.com/banchoapi/getthumb?frameid=4






ここhttp://m-labo.appspot.com/banchoapi.htmlで動作確認できます。