Получение ошибки «302» во время аутентификации gmail api - PullRequest
0 голосов
/ 22 апреля 2020

Добрый день, я использую аутентификацию gmail api в своем приложении для отправки электронных писем. Сегодня я начал получать ошибку «302». Все было хорошо в начале апреля, когда я в последний раз использовал свое приложение.

void DownloaderGmailAPI::getCode(){

QString FileName = "client_secret______.json";
QFile jsonFile(FileName);
if (!jsonFile.open(QIODevice::ReadOnly))
{
    return;
}
QByteArray saveData = jsonFile.readAll();
jsonFile.close();

QJsonDocument jsonDocument(QJsonDocument::fromJson(saveData));
const auto object = jsonDocument.object();
const auto settingsObject = object["web"].toObject();
const QUrl authUri(settingsObject["auth_uri"].toString());
const auto clientId = settingsObject["client_id"].toString();
const QUrl tokenUri(settingsObject["token_uri"].toString());
const auto clientSecret(settingsObject["client_secret"].toString());
const auto redirectUris = settingsObject["redirect_uris"].toArray();
const QUrl redirectUri(redirectUris[0].toString()); // Get the first URI
const auto port = static_cast<quint16>(redirectUri.port()); // Get the port

QUrl url;
url.setScheme("https");
url.setHost("accounts.google.com");
url.setPath("/o/oauth2/auth");

QUrlQuery params;
params.addQueryItem("scope", "https://www.googleapis.com/auth/gmail.readonly https://www.googleapis.com/auth/gmail.send");
params.addQueryItem("redirect_uri", "http://127.0.0.1:8080");
params.addQueryItem("response_type","code");
params.addQueryItem("client_id", clientId);


url.setQuery(params);
if(checkUrl(url)){
    QNetworkRequest request;    // 
    request.setUrl(url);
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
    manager->get(request);      // 
}}

Может быть, я не видел каких-либо обновлений в изменении адреса или что-то еще?

1 Ответ

1 голос
/ 22 апреля 2020

Ранее я получил код 200 с URL перенаправления в теле. Я добавляю получение местоположения из заголовка ответа, и это помогает.

QString location = reply->header(QNetworkRequest::LocationHeader).toString();
QDesktopServices::openUrl(QUrl(location));
...