読者です 読者をやめる 読者になる 読者になる

Go言語 / golangで、はてなAPIをOauth1.0aでアクセスする為にトークンを得る

f:id:nasust:20161122141513p:plain The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/) CC3.0

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

GitHub - garyburd/go-oauth: OAuth 1.0 client package for Go

このライブラリを利用して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)
}

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


Go言語 / golang 入門 目次に戻る

広告を非表示にする