我无法弄清楚如何传递重定向网址来完成OAuth2授权。 Google REST API表示可以传递redirect_url参数,但此.Net API似乎没有传递重定向网址的功能
Dim Coll As New List(Of String)
Coll.Add(CalendarService.Scope.Calendar)
Coll.Add(Google.Apis.Tasks.v1.TasksService.Scope.Tasks)
Dim credential As UserCredential = GoogleWebAuthorizationBroker.AuthorizeAsync(New ClientSecrets() With { _
.ClientId = ClientCredentials.ClientID, _
.ClientSecret = ClientCredentials.ClientSecret _
}, Coll, "user", CancellationToken.None, New SavedDataStore(myStoredResponse)).Result
Dim CalService = New CalendarService(New BaseClientService.Initializer() With { _
.HttpClientInitializer = credential, _
.ApplicationName = "myApp"})
执行此代码时会启动浏览器实例,但该请求中的return_url参数始终为某个随机网址(例如http://localhost:<random port number>/Authorize
。不知道此值的来源。在API中控制台,我已设置http://localhost:4444/Home/Index
。由于没有匹配项,因此身份验证会引发错误:redirect_uri_mismatch
以上代码会生成此请求网址
https://accounts.google.com/o/oauth2/auth?access_type=offline&response_type=code&client_id=589627125301.apps.googleusercontent.com&redirect_uri=http://localhost:44933/authorize/&scope=https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/tasks
总之,问题是,http://localhost:44933/authorize/
来自何处?
关于如何在代码中设置此redirect_uri参数的任何指针?
答案 0 :(得分:1)
尝试添加.CallbackURL属性。 Google API通常会查找一个。