invalid indirect of oauth.RequestToken literal (type oauth.RequestToken)
为什么以下行无效?
func (s *Service) Callback(r *http.Request, req *RequestOauth, resp *Response) error {
c := endpoints.NewContext(r)
consumer.HttpClient=urlfetch.Client(c)
====>requestToken := *oauth.RequestToken{Token:req.Oauth_token, Secret:""}<======
b, err := TwitterApi(requestToken, req.Oauth_verifier)
resp.Message=b.Name
return err
}
func TwitterApi(requestToken *oauth.RequestToken, verificationCode string) (u *UserT, err error) {
accessToken, err := consumer.AuthorizeToken(requestToken, verificationCode)
if err != nil {log.Fatal(err)}
response, err := consumer.Get("https://api.twitter.com/1.1/account/verify_credentials.json", nil, accessToken)
if err != nil {log.Fatal(err)}
defer response.Body.Close()
b, err := ioutil.ReadAll(response.Body)
err = json.Unmarshal(b, &u)
return
}
Run Code Online (Sandbox Code Playgroud)
lnm*_*nmx 72
这一行:
requestToken := *oauth.RequestToken{Token:req.Oauth_token, Secret:""}
Run Code Online (Sandbox Code Playgroud)
从字面上翻译说"创建一个实例oauth.RequestToken,然后尝试将其作为指针取消引用".即它试图通过文字结构值执行间接(指针)访问.
相反,您希望创建实例并获取其地址(&),从而产生指向RequestToken的指针*oauth.RequestToken:
requestToken := &oauth.RequestToken{Token:req.Oauth_token, Secret:""}
Run Code Online (Sandbox Code Playgroud)
或者,您可以将令牌创建为本地值,然后通过地址将其传递给TwitterApi函数:
requestToken := oauth.RequestToken{Token:req.Oauth_token, Secret:""}
b, err := TwitterApi(&requestToken, req.Oauth_verifier)
Run Code Online (Sandbox Code Playgroud)
你需要创建一个指向你正在创建的值的指针,这是完成的&,*相反,它取消引用一个指针.所以:
requestToken := &oauth.RequestToken{Token:req.Oauth_token, Secret:""}
Run Code Online (Sandbox Code Playgroud)
现在requestToken是一个指向oauth.RequestToken值的指针.
或者您可以将requestToken初始化为值:
requestToken := oauth.RequestToken{Token:req.Oauth_token, Secret:""}
Run Code Online (Sandbox Code Playgroud)
现在requestToken是一个oauth.RequestToken值.
然后,您可以将指向该值的指针传递给TwitterApi
b, err := TwitterApi(&requestToken, req.Oauth_verifier)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44322 次 |
| 最近记录: |