看看PromptCodeReceiver的实现,你可以看到它包含重定向uri。
您可以使用您喜欢的重定向 uri 实现自己的 ICodeReceiver,并从类似于 GoogleWebAuthorizationBroker 的 WebBroker 调用它。
我认为理解为什么不能只使用 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);
另外:
- 我很乐意进一步了解您为什么需要设置不同的重定向 uri,以便我们能够相应地改进库。
- 当我创建已安装的应用程序时,当前的 PromptCodeReceiver 和 LocalServerCodeReceiver 为我工作,所以我不确定您的代码有什么问题。