github api 叩いてユーザー情報を取得する
最終的に,こんな感じのコードを書いて取得できた.
type CredentialInfo struct { gorm.Model Login string `json:"login"` AccessToken string `json:"access_token"` Scope string `json:"scope"` TokenType string `json:"token_type"` } func (c *CredentialInfo) GetGithubUserData() { req, err := http.NewRequest( "GET", "https://api.github.com/user", nil, ) if err != nil { panic(err) } req.Header.Set("Accept", "application/json") req.Header.Set("Authorization", "bearer "+c.AccessToken) client := &http.Client{} resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() byteArray, _ := ioutil.ReadAll(resp.Body) json.Unmarshal(byteArray, &c) }
直さないといけない点
ORMにgormを使用しているが,
このままだとgorm.ModelのIDとgithub APIの方のIDが被って,IDの上書きが起こってしまう.
別の構造体を用意すれば解決する.共用する意味ないし.
つまづいた点
この記事によると
user情報をrequestする時は http リクエストをGET で行わなければならない感じだが,
ずっと,POST で頑張ってた...
今回はAPIがGETリクエストを要求していたからGETにしたが,
GETとPOSTの違いがいまいちわかっていない.