0
我想用C#克隆/下載我的專用bitbucket.org存儲庫,但我想要使用純HTTPS REST調用,而不是第三方庫,我想了解它是如何工作的。如何使用純REST API調用版本1或2下載專用bitbucket.org存儲庫
到目前爲止,我只能找到api版本1的示例代碼。 這是我有工作迄今在C#是什麼:
static void AUthenticate()
{
var time = GenerateTimeStamp();
var url = "https://bitbucket.org/api/1.0/oauth/request_token";
var secret = "SECRET";
var key = "KEY";
var sigBaseStringParams = "";
sigBaseStringParams += "oauth_callback=http%3A%2F%2Flocal%3Fdump";
sigBaseStringParams += "&" + "oauth_consumer_key=" + key;
sigBaseStringParams += "&" + "oauth_nonce=" + GetNonce();
sigBaseStringParams += "&" + "oauth_signature_method=" + "HMAC-SHA1";
sigBaseStringParams += "&" + "oauth_timestamp=" + time;
sigBaseStringParams += "&" + "oauth_version=1.0";
var sigBaseString = "POST&";
sigBaseString += Uri.EscapeDataString(url) + "&" + Uri.EscapeDataString(sigBaseStringParams);
var signature = GetSignature(sigBaseString, secret);
var res = PostData(url, sigBaseStringParams + "&oauth_signature=" + Uri.EscapeDataString(signature));
var items = GetParameters(res);
var tokenSecret = items["oauth_token_secret"];
var token = items["oauth_token"];
var callbackConfirmed = items["oauth_callback_confirmed"];
url = "https://bitbucket.org/api/1.0/oauth/authenticate?oauth_token=" + token;
}
這驗證,我得到3個值回。最後我的網址粘貼到瀏覽器中,在那裏我承認我的應用程序訪問和我結束了一個oauth_verifier
注:我真的不希望這樣做,因爲我寫它贏得了一個服務器程序「T真的能夠(在同一時間,但有一件事)用戶發送到瀏覽器鏈接
我然後運行下面的代碼:
var url = "https://bitbucket.org/api/1.0/oauth/access_token";
var token = "TOKEN FROM PREV CALL";
var time = GenerateTimeStamp();
var sigBaseStringParams = "";
//sigBaseStringParams += "oauth_callback=http%3A%2F%2Flocal%3Fdump";
var secret = "SECRET";
var key = "KEY";
sigBaseStringParams += "oauth_consumer_key=" + key;
sigBaseStringParams += "&" + "oauth_token=" + token;
sigBaseStringParams += "&" + "oauth_nonce=" + GetNonce();
sigBaseStringParams += "&" + "oauth_signature_method=" + "HMAC-SHA1";
sigBaseStringParams += "&" + "oauth_timestamp=" + time;
sigBaseStringParams += "&" + "oauth_verifier=AUTH VERIFIER FROM PREV CALL";
var sigBaseString = "POST&";
sigBaseString += Uri.EscapeDataString(url) + "&" + Uri.EscapeDataString(sigBaseStringParams);
var tokenSecret = "TOKEN SECRET FROM PREVIOUS CALL";
var signature = GetSignature(sigBaseString, secret, tokenSecret);
var res = PostData(url, sigBaseStringParams + "&oauth_signature=" + Uri.EscapeDataString(signature));
這給了我一個400錯誤的請求。我看不到其他的東西。
爲什麼我這樣做是因爲我想最終使一個POST請求(或GET)這個網址:
var url2 = "https://bitbucket.org/ACCOUNT/REPOSITORY/get/tip.zip?access_token="+token;
因爲我認爲這會給我一個zip文件中的整個存儲庫。如果我把它放在瀏覽器中,它會工作,因爲我登錄到bitbucket。
如果有更新/更容易/更好的方式,我願意接受建議。
在此先感謝
你可以暫時使用第三方工具,看看它做什麼使用招或看源的第三方或者與實際的源代碼或dotPeek如果它不會被混淆。 – TyCobb
這是一種方式,但他們是如何弄清楚的? 當然,文檔應該是可用的,因爲它是一個公共API。 我敢肯定,我只是在錯誤的地方尋找或錯過了一些東西。 – Quintonn