2015-10-06 2 views
-1

Просто возитесь с API Github и oauth. Я дошел до того, что получил access_token от GH.Анализ ответа Github для access_token

У меня до сих пор:

url := "https://github.com/login/oauth/access_token" 

params := map[string]string{"client_id": client_id, "client_secret": client_secret, "code": code} 
data, _ := json.Marshal(params) 
resp, _ := http.Post(url, "application/json", bytes.NewBuffer(data)) 

defer resp.Body.Close() 

body, _ := ioutil.ReadAll(resp.Body) 

, но сейчас я хотел бы получить доступ к части ответа. Согласно документам GH, они находятся в форме access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&scope=user%2Cgist&token_type=bearer

Нужно ли мне разбирать строку или есть «лучший» способ?

+1

Если вы отправляете 'Accept' заголовок к API (также с' приложения/json'), вы должны получить ответ в формате JSON, который может быть unmarshaled. – rjz

ответ

3

Это строка запроса URL. Вы можете использовать пакет url, чтобы проанализировать его и получить url.Values (это всего лишь карта).

resp := "access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&scope=user%2Cgist&token_type=bearer" 
values, err := url.ParseQuery(resp) 
if err != nil { 
    panic(err) 
} 

fmt.Println("access_token:", values["access_token"]) 
fmt.Println("token_type:", values["token_type"]) 

+0

Я пошел на подход Json accept header, но отметил это как полезный. благодаря – tommyd456