当前位置: 首页 > 知识库问答 >
问题:

GoogleWebAuthorizationBroker不适用于Xamarin Android

后学
2023-03-14

我想在我的移动应用程序中使用谷歌oauth授权。我之前已经在测试控制台应用中实现了此功能。但是,在我在 Xamarin Android中重新定位我的代码后,出现了一些问题。法典:

private void _youtubeOAuth() 
{
    string[] scopes =
        {
        "https://www.googleapis.com/auth/youtube.readonly",
    };
    var clientSecrets = new ClientSecrets
    {
        ClientId = "00000v.apps.googleusercontent.com",
        ClientSecret = "GOCS****Jo8EMYq"
    };

    UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        clientSecrets,
        scopes,
        "user_id",
        CancellationToken.None,
        new FileDataStore(""))
    .Result;

    var youtubeService = new YouTubeService(
        new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Desktop client 1"
        });

    var channelsListRequest = youtubeService.Channels.List("contentDetails, snippet");
    channelsListRequest.Mine = true;
    ChannelListResponse channelsListResponse = channelsListRequest.Execute();
    string chanellTitle = channelsListResponse.Items[0].Snippet.Title;
    Console.WriteLine(chanellTitle + " Subscriptions:");
}

这是脏代码,但在控制台应用中执行得很好。当我尝试在 Xamarin 中启动方法时,我捕获异常:

无法启动带有“”的浏览器https://accounts.google.com/o/oauth2/v2/auth?access_type=offline

我不确定移动应用程序权限中的问题,因为此代码执行良好。

private async void _openBrowser() 
{
    Uri uri = new Uri("https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&response_type=code&client_id=****.apps.googleusercontent.com&redirect_uri=http%3A%2F%2F127.0.0.1%3A40031%2Fauthorize%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly");
    await Browser.OpenAsync(uri, BrowserLaunchMode.SystemPreferred);
}

共有1个答案

陆飞鸿
2023-03-14

谷歌。net客户端库不支持Xamarin。这个信息可以在库的Github页面上找到。

多年来,有许多问题需要支持#984,决定不尝试支持Xamarin。

在2018年10月的团队讨论中,我们决定不继续支持Xamarin。我们看不到有足够的使用证明我们完全支持Xamarin平台所需的技术工作和基础设施是合理的。

如果情况发生变化,我们将定期重新考虑这一决定。

由于该库目前处于维护模式,并且目前没有其他功能正在开发中。我不希望添加这个。

也就是说,几年前我能够让这个为一个客户工作,这需要我为它创建自己的授权方法。然后创建您自己的idatastore实现,它将读取您的凭证。这可能会给你一个如何做这件事的想法。

 类似资料:
  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。

  • 我能够成功地打电话给邮递员: /mfp/api/az/v1/token和 /mfpadmin/management-apis/2.0/runtimes/mfp/applications 我正在获取从/mfp/api/az/v1/token接收的承载令牌,并将其添加到/mfp/applications的授权标头中。 我收到了来自两者的200个响应,并从每个API中获取了预期的信息。 然后,我选择从P

  • 我一直在使用声纳3.2 同样的配置,当我升级到SonarQube 4.4时 声纳项目属性: 请帮助整理这些例外 问候, KP

  • 我已经看过并尝试了几乎所有关于这个话题的其他帖子,但运气不好。 我使用的是python 3.6,所以我使用的是以下AMI