private void forToken() { var verifier = ""; var path = ""; if (init.gearalias != null) { verifier = init.gearalias; path = "response_type=code&client_id=" + init.gearkey + "&scope=appid:" + init.appid + "%20alias:" + init.gearalias + "&state=mgrev:" + init.mgrev; } else { verifier = init.mgrev; path = "response_type=code&client_id=" + init.gearkey + "&scope=appid:" + init.appid + "&state=mgrev:" + init.mgrev; } var client = new RestClient(init.gearauthsite + "/oauth2/authorize?" + path); var request = new RestRequest(Method.GET); var response = client.Execute(request); string responsecode = response.ResponseUri.ToString(); string[] responsecodelist = responsecode.Replace("code=", "|").Split('|'); if (responsecodelist.Length == 2) { var code = responsecodelist[1]; string oauthToken = code; string oauthTokenSecret = "null"; this.requesttoken.token = oauthToken; this.requesttoken.secret = oauthTokenSecret; this.requesttoken.verifier = verifier; this.tokencache.requesttoken = this.requesttoken; path = "grant_type=authorization_code&code=" + code + "&client_id=" + init.gearkey + "&client_secret=" + init.gearsecret + "&state=mgrev:" + init.mgrev; client = new RestClient(init.gearauthsite + "/oauth2/token?" + path); request = new RestRequest(Method.POST); response = client.Execute(request); string responsetoken = response.Content; string[] responsetokenlist = responsetoken.Replace("{\"access_token\":\"", "|").Split('|'); if (responsetokenlist.Length == 2) { responsetokenlist = responsetokenlist[1].Replace("\",\"token_type\"", "|").Split('|'); if (responsetokenlist.Length == 2) { responsetokenlist = responsetokenlist[0].Replace(":", "|").Split('|'); oauthToken = responsetokenlist[0]; oauthTokenSecret = responsetokenlist[1]; responsetokenlist = responsetoken.Replace("\"endpoint\":\"", "|").Split('|'); responsetokenlist = responsetokenlist[1].Replace("\"}", "|").Split('|'); string endpoint = responsetokenlist[0]; string revokecode = CreateToken(oauthTokenSecret + "&" + init.gearsecret, oauthToken); revokecode = revokecode.Replace('/', '_'); this.accesstoken.token = oauthToken; this.accesstoken.secret = oauthTokenSecret; this.accesstoken.endpoint = endpoint; this.accesstoken.revokecode = revokecode; this.tokencache.accesstoken = this.accesstoken; this.tokencache.key = init.gearkey; this.token._ = this.tokencache; this.cache.set_item(this.token, "microgear-" + init.gearkey + ".cache"); } } else { this.onError("Access token is not issued, please check your consumerkey and consumersecret."); reset = true; this.ResetToken(); } } else { this.onError("Request token is not issued, please check your appkey and appsecret."); } }
private void forToken() { var verifier = ""; if (init.gearalias != null) { verifier = init.gearalias; } else { verifier = init.mgrev; } Uri baseUrl = new Uri(init.gearauthsite); RestClient client = new RestClient(baseUrl.AbsoluteUri) { Authenticator = OAuth1Authenticator.ForRequestToken(init.gearkey, init.gearsecret) }; RestRequest request = new RestRequest(init.requesttokenendpoint, Method.POST); request.AddParameter("oauth_callback", "scope=" + init.scope + "&mgrev=" + init.mgrev + "&appid=" + init.appid + "&verifier=" + verifier); Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; IRestResponse response = client.Execute(request); HttpStatusCode statusCode = response.StatusCode; int numericStatusCode = (int)statusCode; if (numericStatusCode == 200) { NameValueCollection qs = HttpUtility.ParseQueryString(response.Content); string oauthToken = qs["oauth_token"]; string oauthTokenSecret = qs["oauth_token_secret"]; this.requesttoken.token = oauthToken; this.requesttoken.secret = oauthTokenSecret; this.requesttoken.verifier = verifier; this.tokencache.requesttoken = this.requesttoken; string url = client.BuildUri(request).ToString(); request = new RestRequest(init.accesstokenendpoint, Method.POST); request.RequestFormat = DataFormat.Json; client.Authenticator = OAuth1Authenticator.ForAccessToken(init.gearkey, init.gearsecret, oauthToken, oauthTokenSecret); request.AddParameter("oauth_verifier", verifier); response = client.Execute(request); statusCode = response.StatusCode; numericStatusCode = (int)statusCode; if (numericStatusCode == 200) { qs = HttpUtility.ParseQueryString(response.Content); oauthToken = qs["oauth_token"]; oauthTokenSecret = qs["oauth_token_secret"]; string endpoint = qs["endpoint"]; string revokecode = CreateToken(oauthTokenSecret + "&" + init.gearsecret, oauthToken); revokecode = revokecode.Replace('/', '_'); url = client.BuildUri(request).ToString(); this.accesstoken.token = oauthToken; this.accesstoken.secret = oauthTokenSecret; this.accesstoken.endpoint = endpoint; this.accesstoken.revokecode = revokecode; this.tokencache.accesstoken = this.accesstoken; this.tokencache.key = init.gearkey; this.token._ = this.tokencache; this.cache.set_item(this.token, "microgear-" + init.gearkey + ".cache"); } else { this.onError("Access token is not issued, please check your consumerkey and consumersecret."); reset = true; this.ResetToken(); } } else { this.onError("Request token is not issued, please check your appkey and appsecret."); } }