Я пытаюсь использовать логин Google API для листов Google в проекте asp.net c #, но получаю redirect_uri_mismatch
ошибку 400. Я даже не установил этот URL перенаправления, на который Google перенаправляет.Я установил URL перенаправления http://127.0.0.1:63092/login.aspx
, но Google перенаправляет на http://127.0.0.1:13557/authorize/
неправильный порт и неправильную веб-страницу.Мой Credential.json
также не имеет ничего похожего на /authorize/
, как вы можете видеть ниже.
{
"web": {
"client_id": "client_idxxxxxxx.apps.googleusercontent.com",
"project_id": "app-xxxxx",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "secret_xxxxxxxx",
"redirect_uris": [ "http://127.0.0.1:63092/login.aspx" ],
"javascript_origins": [ "http://127.0.0.1:63092" ]
}
}
При каждой попытке он меняет порт на 127.0.0.1
и перенаправляет на /authorize/
, в чем может быть проблемаВот?Что я делаю не так?
Мой код
static string[] Scopes = { SheetsService.Scope.Spreadsheets };
static string ApplicationName = "My App";
static string thisDir = System.Web.Hosting.HostingEnvironment.MapPath("~/");
protected void Button1_Click(object sender, EventArgs e)
{
UserCredential credential;
using (var stream =
new FileStream(thisDir + "credential.json", FileMode.Open, FileAccess.Read))
{
string credPath = thisDir + "token.json";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
}
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
String spreadsheetId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
String range = "Sheet1";
SpreadsheetsResource.ValuesResource.GetRequest request =
service.Spreadsheets.Values.Get(spreadsheetId, range);
ValueRange response = request.Execute();
IList<IList<Object>> values = response.Values;
if (values != null && values.Count > 0)
{
Console.WriteLine("Name, Major");
foreach (var row in values)
{
Console.WriteLine("{0}, {1}", row[0], row[4]);
}
}
else
{
Console.WriteLine("No data found.");
}
}