C#学习教程:如何为GoogleWebAuthorizationBroker.AuthorizeAsync设置return_uri?分享


如何为GoogleWebAuthorizationBroker.AuthorizeAsync设置return_uri?

我正在尝试在非MVC .NET Web应用程序中使用Google Calendar API 。 (这似乎是一个重要的区别。)

我试图在谷歌和Daimto的这个例子中使用这个例子中的代码以及来自这里的一些相关post的一些有用的提示。

我写了以下方法:

public void GetUserCredential( String userName ) { String clientId = ConfigurationManager.AppSettings[ "Google.ClientId" ]; //From Google Developer console https://console.developers.google.com String clientSecret = ConfigurationManager.AppSettings[ "Google.ClientSecret" ]; //From Google Developer console https://console.developers.google.com String[] scopes = new string[] { Google.Apis.Calendar.v3.CalendarService.Scope.Calendar }; // here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData% UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync( new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }, scopes, userName, CancellationToken.None, new FileDataStore( "c:\temp" ) ).Result; // TODO: Replace FileDataStore with DatabaseDataStore } 

问题是,当调用Google的OAuth2页面时, redirect_uri会一直设置为http://localhost:/authorize 。 我不知道如何将其设置为其他内容,如以下示例由AuthorizeAsync生成的URL:

 https://accounts.google.com/o/oauth2/auth?access_type=offline &response_type=code &client_id=********.apps.googleusercontent.com &redirect_uri=http:%2F%2Flocalhost:40839%2Fauthorize%2F &scope=https:%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar 

Google使用redirect_uri_mismatch错误页面回复,并显示以下消息:

“请求中的重定向URI: http:// localhost:XXXXX / authorize /与注册的重定向URI不匹配”

我只能在Google Developer’s Console Credentials页面中注册这么多重定向URI。 我不打算注册65535端口,我想在我的网站上使用/authorize以外的页面。 具体来说,我想在开发过程中使用http://localhost:888/Pages/GoogleApiRedirect但我不知道在哪里设置它,除了我在Developer’s Console中所做的。

如何显式设置redirect_uri的值? 我也愿意以“这种方法完全错误”的forms回复。

编辑:

在过去一天玩这个之后,我发现通过使用本机应用程序而不是Web应用程序的客户端ID /客户端密钥,我至少可以访问Google的Web授权页面,而不会抱怨redirect_uri_mismatch 。 这仍然是不可接受的,因为它仍然返回到http://localhost:/authorize ,这超出了我的Web应用程序的控制范围。

您可以使用以下代码:(原创想法来自http://coderissues.com/questions/27512300/how-to-append-login-hint-usergmail-com-to-googlewebauthorizationbroker )

 dsAuthorizationBroker.RedirectUri = "my localhost redirect uri"; UserCredential credential = await dsAuthorizationBroker.AuthorizeAsync(... 

dsAuthorizationBroker.cs

上述就是C#学习教程:如何为GoogleWebAuthorizationBroker.AuthorizeAsync设置return_uri?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Google.Apis.Auth.OAuth2; using Google.Apis.Auth.OAuth2.Flows; using Google.Apis.Auth.OAuth2.Requests; using Google.Apis.Util.Store; namespace OAuth2 { public class dsAuthorizationBroker : GoogleWebAuthorizationBroker { public static string RedirectUri; public new static async Task AuthorizeAsync( ClientSecrets clientSecrets, IEnumerable scopes, string user, CancellationToken taskCancellationToken, IDataStore dataStore = null) { var initializer = new GoogleAuthorizationCodeFlow.Initializer { ClientSecrets = clientSecrets, }; return await AuthorizeAsyncCore(initializer, scopes, user, taskCancellationToken, dataStore).ConfigureAwait(false); } private static async Task AuthorizeAsyncCore( GoogleAuthorizationCodeFlow.Initializer initializer, IEnumerable scopes, string user, CancellationToken taskCancellationToken, IDataStore dataStore) { initializer.Scopes = scopes; initializer.DataStore = dataStore ?? new FileDataStore(Folder); var flow = new dsAuthorizationCodeFlow(initializer); return await new AuthorizationCodeInstalledApp(flow, new LocalServerCodeReceiver()) .AuthorizeAsync(user, taskCancellationToken).ConfigureAwait(false); } } public class dsAuthorizationCodeFlow : GoogleAuthorizationCodeFlow { public dsAuthorizationCodeFlow(Initializer initializer) : base(initializer) { } public override AuthorizationCodeRequestUrl CreateAuthorizationCodeRequest(string redirectUri) { return base.CreateAuthorizationCodeRequest(dsAuthorizationBroker.RedirectUri); } } } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031632.html

发表评论

邮箱地址不会被公开。 必填项已用*标注