Google OAuth2重定向网址问题

时间:2014-11-25 04:51:03

标签: oauth-2.0

我无法弄清楚如何传递重定向网址来完成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参数的任何指针?

1 个答案:

答案 0 :(得分:1)

尝试添加.CallbackURL属性。 Google API通常会查找一个。