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;
}
・・・
0 件のコメント:
コメントを投稿