Google Drive SDK 1.8.1 RedirectURL



有没有办法提供RedirectURL,然后使用GoogleWebAuthorizationBroker?

以下是C#中的示例代码:

Task<UserCredential> credential = GoogleWebAuthorizationBroker.AuthorizeAsync(secrets, scopes, GoogleDataStore.User, cancellationToken, dataStore);

或者我们必须使用不同的方法?

我有一个"已安装的应用程序",它运行在用户的桌面上,而不是网站上。默认情况下,当我在API控制台中创建"已安装的应用程序"项目时,重定向URI似乎默认设置为本地主机。

最终发生的情况是,在身份验证序列之后,用户被重定向到localhost并收到浏览器错误。我想通过提供我自己的重定向URI:urn:ietf:wg:oauth:2.0:oob:auto 来防止这种情况的发生

使用Python版本的Google Client API似乎可以做到这一点,但我发现很难在.NET.

p>查看PromptCodeReceiver的实现,因为您可以看到它包含重定向uri。

你可以用你喜欢的重定向uri实现你自己的ICodeReceiver,并从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);

此外:

  1. 我很乐意进一步理解为什么你需要设置一个不同的重定向uri,这样我们就能相应地改进库
  2. 当我创建一个已安装的应用程序时,当前的PromptCodeReceiver和LocalServerCodeReceiver适用于我,所以我不确定您的代码有什么问题

相关内容

  • 没有找到相关文章

最新更新