我正在关注Google .Net Quickstart。我正确地(我相信)在开发人员控制台中设置应用程序,并在MVC控制器中得到它...
public class HomeController : Controller
{
static string[] Scopes = { GmailService.Scope.GmailReadonly };
static string ApplicationName = "APP NAME";
public ActionResult Index()
{
ViewBag.Title = "Home Page";
Run();
return View();
}
private void Run()
{
UserCredential credential;
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = "<<MY REAL CLIENT ID IS HERE>>",
ClientSecret = "<<MY REAL CLIENT SECRET IS HERE>>"
},
Scopes,
"<<MY EMAIL ADDRESS>>",
CancellationToken.None, new FileDataStore("Mail.Labels")).Result;
}
}
我已将项目设置为每次都在端口37623上运行,并且我已在开发人员控制台上设置客户端以允许重定向到http://localhost:37623/Home/Index
。
当我运行应用程序时,我会提供一份GMail帐户列表(我有一对),即使我已明确说明我想要使用哪个帐户。当我点击帐户选择器来选择一个帐户时,我立即显示一个错误页面,说我已经返回400错误:redirect_uri_mismatch。
如果我在错误页面上查看请求详细信息,则会显示此信息......
access_type=offline
scope=https://www.googleapis.com/auth/gmail.readonly
response_type=code
redirect_uri=http://localhost:41509/authorize/
client_id=<<MY CLIENT ID>>
如您所见,redirect_uri 错误;它指向端口41509(在这个例子中;它随着每次调用而改变)。
我错过了什么?我应该做的是什么,我不是?似乎无法在调用GoogleWebAuthorizationBroker.AuthorizeAsync
我认为这将是一个10分钟的运动。 : - (
答案 0 :(得分:0)
这似乎是因为我在Google Developer Console中设置的OAuth客户端ID的应用程序类型设置为“Web应用程序”。删除它并创建一个新的应用程序类型设置为“其他”允许我进行身份验证。