有没有办法提供RedirectURL然后使用GoogleWebAuthorizationBroker?
以下是C#中的示例代码:
Task<UserCredential> credential = GoogleWebAuthorizationBroker.AuthorizeAsync(secrets, scopes, GoogleDataStore.User, cancellationToken, dataStore);
或者我们必须使用不同的方法?
我有一个&#34;已安装的应用程序&#34;它运行在用户的桌面上,而不是网站上。默认情况下,当我创建一个&#34;已安装的应用程序&#34;在API控制台中,默认情况下,重定向URI似乎设置为本地主机。
最终发生的是在验证序列之后,用户被重定向到localhost并收到浏览器错误。我想通过提供自己的重定向URI来防止这种情况发生:urn:ietf:wg:oauth:2.0:oob:auto
这似乎可以使用Python版本的Google Client API,但我发现很难找到任何对.NET的引用。
答案 0 :(得分:0)
查看PromptCodeReceiver的实现,因为您可以看到它包含重定向uri。
您可以使用您喜欢的重定向uri实现自己的ICodeReceiver,并从WebBroker中调用它,该WebBroker应与GoogleWebAuthorizationBroker类似。
我认为理解为什么你只能使用PrompotCodeReceiver或LocalServerCodeReceiver会很棒。
请注意,我们上周刚刚发布了一个新库,因此您应该将其更新为1.9.0。
更新(更多细节,2014年11月25日):
您可以创建自己的ICodeReceiver。您必须执行以下操作:
*代码从未经过测试......抱歉。
public class MyNewCodeReceiver : ICodeReceiver
{
public string RedirectUri
{
get { return YOU_REDIRECT_URI; }
}
public Task<AuthorizationCodeResponseUrl> ReceiveCodeAsync(
AuthorizationCodeRequestUrl url,
CancellationToken taskCancellationToken)
{
// YOUR CODE HERE FOR RECEIVING CODE FROM THE URL.
// TAKE A LOOK AT THE FOLLOWING:
// PromptCodeReceiver AND LocalServerCodeReceiver
// FOR EXAMPLES.
}
}
PromptCodeReceiver 和LocalServerCodeReceiver。
然后你必须做以下事情 (而不是使用GoogleWebAuthorizationBroker.AuthorizeAsync方法):
var initializer = new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = secrets,
Scopes = scopes,
DataStore = new FileDataStore("Google.Apis.Auth");
};
await new AuthorizationCodeInstalledApp(
new GoogleAuthorizationCodeFlow(initializer),
new MyNewCodeReceiver())
.AuthorizeAsync(user, taskCancellationToken);
另外: