【问题标题】:Google Apis Failed to launch browser for authorization. See inner exception for detailsGoogle API 无法启动浏览器进行授权。有关详细信息,请参阅内部异常
【发布时间】:2017-06-11 06:38:22
【问题描述】:

我正在尝试构建一个实现 Google Sheets api 的 Android 应用程序;但是,当我尝试创建用户凭据时,我收到一条错误消息,指出浏览器无法启动。我该如何解决这个问题?

这是我的代码:

async Task Run()
{
    UserCredential credential;

    ClientSecrets secrets = new ClientSecrets();
    secrets.ClientId = "465415811596-mqm04akgc7vhgil05hog8blvm2ns6he1.apps.googleusercontent.com";

    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        secrets, 
        new[] { SheetsService.Scope.Spreadsheets}, 
        "user", CancellationToken.None
        );

    Console.WriteLine("Accessing Google Web Systems");

    var service = new SheetsService(new BaseClientService.Initializer()
    {
        //HttpClientInitializer = credential,
        ApplicationName = "budget_application"
    });
}

我相信我已经通过控制台正确设置了 api,因为当我通过我的计算机而不是我的 android 调试运行这段代码时,它工作正常。

谢谢!

【问题讨论】:

    标签: android debugging exception google-sheets-api build-error


    【解决方案1】:

    您似乎正在尝试使用旨在用于台式机的授权流程。在 Android 上,应使用设备上提供的 Google 凭据(具有本机身份验证流程)而不是通过基于浏览器的流程进行 Google 身份验证。

    另见:

    【讨论】:

    • 好的,所以我已经让 google drive api 使用那些文章中描述的方法,但我希望使用 Google sheet v4 api,我不明白这两种方式如何用于身份验证交叉。验证驱动器范围后,我可以像使用 sheet api V4 一样开始访问文件吗?
    • 如果您查看 API 的参考文档(例如 developers.google.com/sheets/api/reference/rest/v4/spreadsheets/…),它会列出所需的范围。因此,例如,看起来“googleapis.com/auth/drive”就足够了。所以,是的,您可以重用为 Drive 创建的 GoogleAccountCredential 对象来访问表格。 (但请注意,您需要从登录流程返回此对象才能发出适当的凭据请求)。
    • 我已经阅读了很多 android api 文档,但我不明白 Google 凭据类如何通过请求接口传递数据。一旦我使用驱动器 api 和正确的范围实例化 GoogleApiClient,我将如何请求凭据返回?
    • 简短的回答是您使用 GoogleAccountCredential.getToken() 获取可以在“Authorization”标头中传递的访问令牌(setHeader("Authorization", Bearer" + token))。您可能会发现此文档有助于更好地理解概念上正在发生的事情:developers.google.com/identity/protocols/OAuth2InstalledApp
    • 好的,所以我理解请求授权码来交换用于激活api的令牌。我不明白这实际上是如何完成的。我对这个编码领域的有限理解让我无法理解大部分语法。
    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 2013-07-09
    相关资源
    最近更新 更多