如何在 ESP8266 上使用令牌向 GitHub 进行身份验证?
How to Authenticate to GitHub with a token on ESP8266?
我可以从 public 存储库更新,现在我想使用令牌对 GitHub 进行身份验证,以下载私有存储库的固件,但我收到连接被拒绝(错误代码 - 1).
我已经配置了证书和 NTP 时间,我不会放它的代码,因为它可以工作。但是这里 code that I'm using as base.
这是我的代码
BearSSL::WiFiClientSecure client;
bool mfln = client.probeMaxFragmentLength("https://api.github.com", 443, 1024); // server must be the same as in ESPhttpUpdate.update()
Serial.printf("MFLN supported: %s\n", mfln ? "yes" : "no");
if (mfln) {
client.setBufferSizes(1024, 1024);
}
client.setCertStore(&certStore);
HTTPClient http;
http.begin("https://api.github.com/repos/user/reponame/contents/firmware.bin");
http.addHeader("Accept", "application/vnd.github.v3+json");
http.addHeader("authorization", "Bearer token");
//http.setAuthorization("token");
Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
return;
}
ESPhttpUpdate.setLedPin(LED_BUILTIN, LOW);
t_httpUpdate_return ret = ESPhttpUpdate.update(client, "https://api.github.com/repos/user/reponame/contents/firmware.bin");
我无法访问更新功能,因为我无法进行身份验证。
看看你的代码。您正在设置 client
但您从未使用过它。您需要像这样将其传递给 http.begin()
:
http.begin(client, "https://github.com/user/reponame");
否则 HTTP 不知道使用 BearSSL::WiFiClientSecure
您费了那么大劲才设置的。
我可以从 public 存储库更新,现在我想使用令牌对 GitHub 进行身份验证,以下载私有存储库的固件,但我收到连接被拒绝(错误代码 - 1).
我已经配置了证书和 NTP 时间,我不会放它的代码,因为它可以工作。但是这里 code that I'm using as base.
这是我的代码
BearSSL::WiFiClientSecure client;
bool mfln = client.probeMaxFragmentLength("https://api.github.com", 443, 1024); // server must be the same as in ESPhttpUpdate.update()
Serial.printf("MFLN supported: %s\n", mfln ? "yes" : "no");
if (mfln) {
client.setBufferSizes(1024, 1024);
}
client.setCertStore(&certStore);
HTTPClient http;
http.begin("https://api.github.com/repos/user/reponame/contents/firmware.bin");
http.addHeader("Accept", "application/vnd.github.v3+json");
http.addHeader("authorization", "Bearer token");
//http.setAuthorization("token");
Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
return;
}
ESPhttpUpdate.setLedPin(LED_BUILTIN, LOW);
t_httpUpdate_return ret = ESPhttpUpdate.update(client, "https://api.github.com/repos/user/reponame/contents/firmware.bin");
我无法访问更新功能,因为我无法进行身份验证。
看看你的代码。您正在设置 client
但您从未使用过它。您需要像这样将其传递给 http.begin()
:
http.begin(client, "https://github.com/user/reponame");
否则 HTTP 不知道使用 BearSSL::WiFiClientSecure
您费了那么大劲才设置的。