【问题标题】:How to directly pass Podio AuthToken to podio-go client如何直接将 Podio AuthToken 传递给 podio-go 客户端
【发布时间】:2016-11-03 12:36:12
【问题描述】:

我是一名 Ruby on Rails 开发人员,现在正在尝试使用 Go 进行一些 podio.com API 调用。到目前为止一切都很顺利,但我遇到了一个小而愚蠢的问题,我在强大的 stackoverflow 上找不到答案(可能是因为我不知道要搜索什么)。

一点上下文:我们的 rails 应用程序已经在处理所有的 podio oAuth 服务器流,我们拥有所有必要的客户端信息(auth_token、refresh_token、...),并且不需要再次请求该信息。

而不是做

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

我希望像这样直接创建一个客户端对象

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

我得到了错误

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

有人可以帮我解决这个问题吗?它不一定与 Podio 相关。更多go相关

【问题讨论】:

    标签: go types podio


    【解决方案1】:

    当前变量authToken 的类型是podio.AuthToken,即不是指针,而只是一个结构。函数podio.NewClient 需要一个类型为*podio.AuthToken 的参数(指向podio.AuthToken),这就是你得到编译器错误的原因。解决这个问题的最简单方法是像这样简单地尊重authToken

    client := podio.NewClient(&authToken)
    

    或者,您可以将authToken 的类型更改为*podio.AuthToken

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

    有点不相关(也许你为了简洁省略了这个),但你可能想检查从json.Unmarshal返回的错误:

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

    【讨论】:

    • 像魅力一样工作!一个&符号几乎让我发疯了。感谢安德烈亚斯的超级快速回复。欣赏!
    • 确实,我在解析 json 时遇到了错误。但没有发布它以使示例代码更简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多