はてなAPIをOauth1.0aでアクセスする為にトークンを得る

created byTakuya Ueda. Licensed under the Creative Commons 3.0 Attributions license.

こんにちはnasustです。 Go言語 / golangで、はてなAPIがOauth 1.0aでアクセスできたので公開します。

このライブラリを利用してOauth1.0aの認証しています。 ライブラリのサンプルを流用して書きました。

package main

import (
	"fmt"
	"log"
	"net/url"

	"github.com/garyburd/go-oauth/oauth"
)

func main() {
	oauthClient := &oauth.Client{
		Credentials: oauth.Credentials{
			Token:  "XXXXXXXXXXX",
			Secret: "XXXXXXXXXXX",
		},
		TemporaryCredentialRequestURI: "https://www.hatena.com/oauth/initiate",
		ResourceOwnerAuthorizationURI: "https://www.hatena.com/oauth/authorize",
		TokenRequestURI:               "https://www.hatena.com/oauth/token",
	}

	scope := url.Values{"scope": {"read_public,write_public,read_private,write_private"}}

	tempCredentials, err := oauthClient.RequestTemporaryCredentials(nil, "oob", scope)
	if err != nil {
		log.Fatal("RequestTemporaryCredentials:", err)
	}

	u := oauthClient.AuthorizationURL(tempCredentials, nil)
	fmt.Printf("1. Go to %s\n2. Authorize the application\n3. Enter verification code:\n", u)

	var code string
	fmt.Scanln(&code)

	fmt.Println("InputCode: ", code)

	tokenCard, _, err := oauthClient.RequestToken(nil, tempCredentials, code)
	if err != nil {
		log.Fatal("RequestToken:", err)
	}

	fmt.Println("Token: ", tokenCard.Token)
	fmt.Println("Secret: ", tokenCard.Secret)
}
go

実行すると、verification codeを取得するURLが表示しますので、 アクセスしてログイン後、許可する操作をしてください。 verification codeをコンソールに貼り付ける、リターンキーを押すと アクセストークンが取得できるので、はてなAPIにアクセスできます。

prevnext