2015-07-19 105 views
1

我正在使用Windovs的C++編寫應用程序以使用雲服務Amazon。我需要在網站上獲得授權才能使用特定數據,並且我想獲得Access令牌。問題是我想要的,我沒有使用瀏覽器獲得授權,但我不明白如何。我使用捲曲的項目,併發送類似如下的要求:當我得到響應我有一個HTML頁面的授權文件的副本在沒有瀏覽器的情況下登錄亞馬遜

int main(void) { 
CURL *curl; 
CURLcode res; 
struct curl_slist *list = NULL; 
FILE *Response = fopen("Response.txt", "wb+"); 
curl = curl_easy_init(); 
if (curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, "https://www.amazon.com/ap/oa?client_id=%MY CLIENT ID%scope=clouddrive:read_all&response_type=token&redirect_uri=http://localhost"); 

    list = curl_slist_append(list, "Accept: text/html"); 
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); 
    curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); 
    curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, SaveData); 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, Response); 
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 

    /* Perform the request, res will get the return code */ 
    res = curl_easy_perform(curl); 

    /* Check for errors */ 
    if (res != CURLE_OK) 
     fprintf(Response, "curl_easy_perform() failed: %s\n", 
     curl_easy_strerror(res)); 


    curl_slist_free_all(list); 
    /* always cleanup */ 
    curl_easy_cleanup(curl); 
} 

。/下面是答案的一部分/

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> 
 
    <html xmlns=\"http://www.w3.org/1999/xhtml\"> 
 
    
 
<head> 
 
<script type='text/javascript'>var ue_t0=ue_t0||+new Date();</script> 
 
<script type='text/javascript'> 
 
var ue_csm = window, 
 
    ue_hob = +new Date();

如果我不能使用的瀏覽器,而我可以用Web瀏覽器(無邊框)打開一個小窗口,並接收來自服務器的數據(訪問令牌)。文檔中沒有任何內容(Amazon文檔)。

回答

0

如果你想讓你的應用程序「談」到AWS,你應該使用他們的API,而不是Web控制檯。 API請求是無狀態的並且signed with credentials,並且不依賴於Web控制檯等身份驗證會話。

他們有許多流行的語言官方的SDK,而不是C++,很遺憾。所以,除非你找到某個地方,否則你將不得不實現你自己的客戶端,但它都是基於HTTP(S)的。

另一件事值得一提的是,每一個產品都有一個單獨的和獨立的API(EC2S3RDS等)。據我所知,你不會找到所有AWS產品的全功能API。文檔也可能有點稀疏,但大多數產品都被覆蓋。

祝你好運。 ;)