2016-07-01 4 views
1

Ich bin ein Ruby on Rails Entwickler und wage mich jetzt in Go um einige podio.com API Aufrufe zu machen. Bisher lief alles glatt, aber ich stieß auf ein kleines und dummes Problem, für das ich keine Antwort auf den mächtigen Stackoverflow fand (wahrscheinlich, weil ich nicht weiß, wonach ich suchen soll).Wie Podio AuthToken direkt an podio-go client übergeben wird

Ein wenig Kontext: Unsere Rails-App verarbeitet bereits alle podio oAuth-Server-Flow wir haben alle notwendigen Client-Informationen (auth_token, refresh_token, ...) und müssen diese Informationen nicht erneut anfordern.

Statt

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

Ich möchte direkt ein Client-Objekt erstellen, wie so

// 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) 

erhalte ich die Fehler

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

jemand mir dabei helfen? Es ist nicht unbedingt Podio bezogen. Mehr gehen verwandt

Antwort

2

Derzeit ist der Typ der Variablen authTokenpodio.AuthToken, d. H. Kein Zeiger, sondern einfach eine Struktur. Die Funktion erwartet ein Argument vom Typ *podio.AuthToken (Zeiger auf podio.AuthToken), weshalb Sie einen Compilerfehler bekommen. Der einfachste Weg, dies zu beheben wäre einfach Rücksicht auf authToken wie so:

authToken := &podio.AuthToken{} 
json.Unmarshal([]byte(json_auth_token), authToken) 
client := podio.NewClient(authToken) 

Etwas nicht verwandten (und vielleicht haben Sie dies der Kürze halber weggelassen:

client := podio.NewClient(&authToken) 

Alternativ können Sie die Art der authToken-*podio.AuthToken ändern), aber Sie möchten wahrscheinlich den Fehler überprüfen, der von json.Unmarshal:

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

Funktioniert wie ein Charme! ein kaufmännisches Und machte mich fast verrückt. Danke für die superschnelle Antwort Andreas. Bin dankbar! – pjmuller

+0

Und tatsächlich mache ich einen Fehler beim Parsen des JSON. Habe es aber nicht gepostet, um den Beispielcode einfacher zu halten. – pjmuller