【发布时间】:2016-07-12 15:56:28
【问题描述】:
我正在关注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的调用中似乎没有设置重定向URI
我认为这将是一个 10 分钟的练习。 :-(
【问题讨论】:
标签: oauth gmail-api google-authentication