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 }
这一行:
requestToken := *oauth.RequestToken{Token:req.Oauth_token, Secret:""}
直译为“创建 的实例oauth.RequestToken,然后尝试将其取消引用为指针。” 即它试图通过文字结构值执行间接(指针)访问。
oauth.RequestToken
相反,您希望创建实例并获取其地址 ( &),从而产生一个指向 RequestToken 的指针*oauth.RequestToken:
&
*oauth.RequestToken
requestToken := &oauth.RequestToken{Token:req.Oauth_token, Secret:""}
或者,您可以将令牌创建为本地值,然后通过地址将其传递给TwitterApi函数:
TwitterApi
requestToken := oauth.RequestToken{Token:req.Oauth_token, Secret:""} b, err := TwitterApi(&requestToken, req.Oauth_verifier)