Facebook graph api Golang oauth 2 facebook错误代码2500(无法指定空标识符)

Facebook graph api Golang oauth 2 facebook错误代码2500(无法指定空标识符),facebook-graph-api,go,oauth-2.0,Facebook Graph Api,Go,Oauth 2.0,我为这个错误挣扎了好几天。以下是我获取令牌所遵循的步骤 使用facebook sdk登录客户端 将短期令牌传递给服务器 获取长寿令牌 这里是错误 {"error":{"message":"Cannot specify an empty identifier","type":"OAuthException","code":2500,"fbtrace_id":"BIEldWBZras"}} 客户端应该直接进行身份验证吗?由于错误代码2500,似乎未建立oauth身份验证。我也不理解“无法指定空标识

我为这个错误挣扎了好几天。以下是我获取令牌所遵循的步骤

  • 使用facebook sdk登录客户端
  • 将短期令牌传递给服务器
  • 获取长寿令牌
  • 这里是错误

    {"error":{"message":"Cannot specify an empty identifier","type":"OAuthException","code":2500,"fbtrace_id":"BIEldWBZras"}}
    
    客户端应该直接进行身份验证吗?由于错误代码2500,似乎未建立oauth身份验证。我也不理解“无法指定空标识符”错误中的这句话 以下是迄今为止的代码:

    func handleExtendFacebookToken(w http.ResponseWriter, r *http.Request)  {
    w.Header().Add("Access-Control-Allow-Origin", "*")
    
    shortLivedToken := r.FormValue("token")
    
    tokenExpiration := time.Now().Local()
    
    resp, err := http.Get("https://graph.facebook.com/oauth/access_token?client_id=" + oauthConf.ClientID + "&client_secret=" + oauthConf.ClientSecret +  "&grant_type=fb_exchange_token&fb_exchange_token=" +
        url.QueryEscape(shortLivedToken))
    if err != nil {
        fmt.Printf("Get: %s\n", err)
        return
    }
    defer resp.Body.Close()
    
    response, err := ioutil.ReadAll(resp.Body)
    
    if err != nil {
        return
    }
    
    var token FacebookToken;
    
    //fmt.Print("response ",string(response))
    
    err = json.Unmarshal(response, &token)
    
    if err != nil {
        log.Fatal("error" + err.Error())
        return
    }
    
    
    //fmt.Println("duration ", token.AccessToken)
    
    tokenExpiration = tokenExpiration.Add(time.Duration(token.Expiry) * time.Second)
    
    fmt.Println(tokenExpiration)
    
    /*resp, err = http.Get("https://graph.facebook.com/me?id&access_token=" +
        url.QueryEscape(token.AccessToken))
    if err != nil {
        fmt.Printf("Get: %s\n", err)
        return
    }
    defer resp.Body.Close()
    
    response, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Printf("ReadAll: %s\n", err)
        return
    }
    
    
    //fmt.Println(string(response))
    token.userId = string(response)*/
    
    token.Expire_Date = tokenExpiration
    token.AccessToken = strings.TrimSpace(token.AccessToken)
    res, err := oauthConf.Client(oauth2.NoContext, token.convertFacebookToken()).Get("https://graph.facebook.com/me?id")
    
    if err != nil {
        fmt.Printf("ReadAll: %s\n", err)
        return
    }
    
    defer res.Body.Close()
    
    response, err = ioutil.ReadAll(res.Body)
    if err != nil {
        fmt.Printf("ReadAll: %s\n", err)
        return
    }
    
    fmt.Println(string (response))
    token.saveTokenToDB()
    }
    

    错误位于
    ?id

    res, err := oauthConf.Client(oauth2.NoContext, token.convertFacebookToken()).Get("https://graph.facebook.com/me?id")
    
    我试着在facebook图形中使用它(它没有抛出任何错误)。我完全错了。应该是:

    res, err := oauthConf.Client(oauth2.NoContext, token.convertFacebookToken()).Get("https://graph.facebook.com/me?fields=id")