設定→詳細設定を表示→ウェブコンテンツ→フォントをカスタマイズ
Sans Serifフォントを「Segoe UI Symbol」にする。
とか
☹☠♛♚♕♔♞♘♖♟☏☯✺☾☽☥☑☒☮☼☢☣☪☯☭✇☤☉⊙⊚◍▵▴▾▿✧✦◈▰❐❑❒◩◪◨◧◫▣▤▥▦▧▨▩▬▭♆☨✞✟✝✠✢✣✤✥☩☫☮☯♗♝♙♟☡☊☋∎⌨⌘⌥⌫℻♺⚡☔♿⎈⦿⦾⦰⦸⦶⦵⦻⟁⟡⟐⧄⧅⧉◰◱◲◳⚭☕⚲⚘⚚♰♱�⚓⚔⚱⚰⚠⚛␦♲♻♺♳♴♵♶♷♸♹⚀⚁⚂⚃⚄⚅
2014年4月23日水曜日
2013年10月15日火曜日
GAEからblogger API v3を使用(OAuth)
bloggerに移行したということで、GAEのcronでblogger API v3を使ってブログ更新するようにしました。
v3から基本的には、OAuthで認証ということで、その辺の手順を中心に忘れないようにメモ。
Blogger API の「無効」ボタンを押すと下のようなページが表示されるので送信ボタンを押す。
数営業日ぐらいでGoogleさんからActivateするためのメールが送られてくるので、
そのメールの中のリンクをクリックすると、Blogger APIが有効になる。
「アプリを登録」をクリック
「ネイティブ」を選択し登録
クライアントIDとクライアントシークレットをメモ
送信をクリック
BlogのユーザでGoogleにログインして、「承認する」をクリック
「コード」をメモしておく
Javaだと下記のような感じのコードになります。
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;
}
・・・
登録:
投稿 (Atom)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)