Green Buttonは、米国政府のエネルギープロジェクトです。私は自分のデータを取得するためのコードを書こうとしていて、彼らはSandBoxを作成しました。ちょうど最近私はデータを取得していて、2日前に突然私がGreenbuttonからのデータを完全に消してしまったときまで、すべてがうまくいっていました!サンドボックスでは、アクセストークンボックスのdatacustodian_access_token:Bearer 2a85f4bd-30db-4b7d-8f41-b046b0566cb3を使用しました。その後、GET/espi/1_1/resource/MeterReadingを起動しました。私は応答コード200と原子xmlを与えてくれました。今では私に禁断の応答コード403を与え、私は戻って取得:緑色のボタンが表示されなくなりましたか?
<oauth>
<error_description>No Authorization Found</error_description>
<error>access_denied</error>
</oauth>
私はデータを取得するために使用していたいくつかのC#のコードを持っていない、それはあまりにも、もはやデータを取得する代わりに、エラーを取得します。コードは以下の通りです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
namespace GreenButton
{
public partial class Test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string authToken = "2a85f4bd-30db-4b7d-8f41-b046b0566cb3"; //Currently the Access Token due to sandbox restrictions.
const string apiBaseUri = "https://services.greenbuttondata.org:443"; //Who we are Calling Web API
const string apiGetPeoplePath = "/DataCustodian/espi/1_1/resource/MeterReading"; //What we want from Them
var response = GetRequest(authToken, apiBaseUri, apiGetPeoplePath).Result;//Captures there reason
//responseString().results;
XMLLabel.Text = response;
}
static async Task<string> GetRequest(string token, string apiBaseUri, string requestPath)
{
using (var client = new HttpClient())
{
//setup client
client.BaseAddress = new Uri(apiBaseUri);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/atom+xml"));
client.DefaultRequestHeaders.Add("Authorization", "Bearer 2a85f4bd-30db-4b7d-8f41-b046b0566cb3");
//make request
HttpResponseMessage response = await client.GetAsync(requestPath).ConfigureAwait(false);
var Conn = response;
var responseString = await response.Content.ReadAsStringAsync();
var XML = responseString;
//Label l2 = new Label();
//l2.Text = XML;
return responseString;
}
}
//public void responseString(string XML)
//{
// Label l2 = new Label();
// l2.Text = XML;
//}
}
}
私はこれを別のネットワーク上の別のコンピュータでも試しましたが、同じ問題がありました。ここ2日間で何が変わったのですか?これはGreenButtonsの終わりですか?彼らがいつダウンしたのか、それとも私のことを知ることができますか?
投稿からauthTokenを非表示にする必要があります。そして、あなたが得たエラーは、データを取得することが許されていないことを除いて、すべてが良いことを意味する403です。トークンが取得しているデータに対して有効である場合は、緑色のボタンのアカウントをチェックしてください。 – Massanu
ちょっと、トークンと使用される情報はSandbox APIの一部であるため、誰にでも公開されています。しかし、この同じ情報は一日前に応答コード200を得ていました。今は403を手に入れていますが、理由を説明することはできません。私はこのコードを1週間ほど使っていませんでしたので、その奇妙なことはそれがずっと長く続いていたときに働いてしまったのです。ページにはアクセスコードが静的な要素であり、何年も変わっていないことが示されています – vmedhe2
私は自分のAPIコールジェネレータを使用して開発者のAPIページを確認しました。これは彼らの側から来ている、彼らはおそらくあなたがそれらに連絡する必要が何かを変更した、何もあなたのコードメイトと間違っている – Massanu