2016-07-01 2 views
1

저는 Ruby on Rails 개발자이고 일부 podio.com API 호출을 수행하기 위해 Go로 모험 중입니다. 모든 것이 순조롭게 진행되었지만 작고 어리석은 문제에 부딪 혔습니다. 그 이유는 거대한 stackoverflow에 대한 답을 찾지 못했기 때문입니다 (아마도 내가 무엇을 검색해야할지 모르기 때문일 것입니다).Podio AuthToken을 podio-go 클라이언트에 직접 전달하는 방법

문맥 : 우리의 레일 앱은 이미 필요한 모든 클라이언트 정보 (auth_token, refresh_token, ...)를 가지고 있으므로 정보를 다시 요청할 필요가없는 모든 podio oAuth 서버 흐름을 처리하고 있습니다. 대신 내가 직접 그렇게

// json data coming from rails 
json_auth_token := "{\"access_token\":\"...\",\"refresh_token\":\"...\",\"token_type\":\"\",\"expires_in\":28800,\"transfer_token\":\"\"}" 

// creating a AuthToken object 
authToken := podio.AuthToken{} 
json.Unmarshal([]byte(json_auth_token), &authToken) 

// so far so good, but when doing 
client := podio.NewClient(authToken) 

같은 클라이언트 객체를 생성 할

podio.AuthWithAuthCode(clientId, clientSecret, authCode, redirectUri) 

을하는

나는 오류가

cannot use authToken (type podio.AuthToken) as type *podio.AuthToken in argument to podio.NewClient 

누군가가 이것 좀 도와 드릴거야? 꼭 Podio와 관련된 것은 아닙니다. More go related

답변

2

현재 변수 authToken의 유형은 podio.AuthToken입니다. 즉, 포인터가 아니라 단순히 구조체입니다. podio.NewClient 함수는 *podio.AuthToken (podio.AuthToken에 대한 포인터) 형식의 인수를 필요로하므로 컴파일러 오류가 발생합니다. 어쩌면

authToken := &podio.AuthToken{} 
json.Unmarshal([]byte(json_auth_token), authToken) 
client := podio.NewClient(authToken) 
약간 관련이없는

(당신이 간결이 생략 :

client := podio.NewClient(&authToken) 

은 또한 당신이 authToken*podio.AuthToken의 유형을 변경할 수 있습니다이 문제를 해결하는 가장 간단한 방법은 단순히 authToken과 같이 복종하는 것), 아마도 json.Unmarshal에서 반환 된 오류를 확인하고 싶을 것입니다 :

err := json.Unmarshal([]byte(json_auth_token), authToken) 
if err != nil { 
    // handle error 
} 
+0

매력처럼 작동합니다. 앰퍼샌드는 거의 나를 미치게 만들었습니다. 슈퍼 빠른 답장 Andreas 주셔서 감사합니다. 고맙습니다! – pjmuller

+0

그리고 실제로 json을 파싱 할 때 오류를 잡으려고합니다. 그러나 예제 코드를 더 간단하게 유지하기 위해 게시하지 않았습니다. – pjmuller

관련 문제