func getTokenInfo(token string, osClient *osclient.Client) (string, *osintypes.InfoResponseData, error) { osResult := osClient.Get().AbsPath("oauth", "info").Param("code", token).Do() if osResult.Error() != nil { return "", nil, fmt.Errorf("Error making info request: %v", osResult.Error()) } body, err := osResult.Raw() if err != nil { return "", nil, fmt.Errorf("Error reading info response: %v\n", err) } glog.V(1).Infof("Raw JSON: %v\n", string(body)) var accessData osintypes.InfoResponseData err = json.Unmarshal(body, &accessData) if err != nil { return "", nil, fmt.Errorf("Error while unmarshalling info response: %v %v", err, string(body)) } if accessData.Error == "invalid_request" { return "", nil, fmt.Errorf("\"%v\" is not a valid token.\n", token) } if len(accessData.ErrorDescription) != 0 { return "", nil, fmt.Errorf("%v\n", accessData.ErrorDescription) } return string(body), &accessData, nil }