代码之家  ›  专栏  ›  技术社区  ›  Lion King

如何使用libCurl将访问令牌发送到服务器API

  •  2
  • Lion King  · 技术社区  · 8 年前


    我引用了他们文档中的以下内容:“要获得访问权限,必须向每个请求添加一个HTTP授权头”。

    curl-H“授权:OAuth” http://www.example.com

    前面的命令是在CURL命令提示符中使用的,但是我希望使用libCurl来实现同样的功能。

    此外,我知道可以设置授权类型,但仍不知道如何发送访问令牌:

    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    

    --

    CURL *curl;
    CURLcode codeRet;
    std::string data;
    std::string fullURL = url + keyword;
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, fullURL.c_str());
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 60L);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);
        curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
        codeRet = curl_easy_perform(curl);
        if (codeRet != CURLE_OK)
            // OutputDebugString(wxString(curl_easy_strerror(codeRet)));
            return "";
        curl_easy_cleanup(curl);
    }
    

    如何使用libCurl将访问令牌发送到服务器API?

    1 回复  |  直到 8 年前
        1
  •  1
  •   miradham    8 年前

    一切有用的东西 -H 选自 curl 命令提示您可以使用 CURLOPT_HTTPHEADER . 因此,我建议在移动到libcurl之前,确保它的一切工作都如您在命令提示符下所期望的那样。

    如果是访问令牌,可以使用 access_token 关键词,即。

    curl -H "access_token: abcdefghijklmnopqrstuvwxyz" http://example.com
    

    CURL *curl = curl_easy_init();     
    struct curl_slist *headers= NULL;
    string token = "abcdefghijklmnopqrstuvwxyz"; // your actual token
    
    if(curl) {
      ...
      curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
      string token_header = "access_token: " + token; // access_token is keyword    
      headers = curl_slist_append(headers, token_header.c_tr());     
      curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
      ...
    
      curl_slist_free_all(headers);
    }
    

    这将向 http://example.com?access_token=abcdefghijklmnopqrstuvwxyz 链接