相关疑难解决方法(0)

获取没有gcloud的服务帐户身份验证令牌?

是否可以在不使用的情况下获取Google Cloud服务帐户的授权持有人令牌gcloud

也就是说,我想提出一个HTTP请求(可能是我的JSON密钥文件以某种方式签名),这将为我提供相当于

gcloud auth application-default print-access-token
Run Code Online (Sandbox Code Playgroud)

此请求将在我自己的服务器上进行,我可能不希望在gcloud那里安装,并且我无法访问可能提供此内容的任何内部服务器元数据(例如,与计算引擎一样).

是否有一些oauth端点提供这样的东西?

或者,有没有办法生成长寿命令牌gcloud

我是Google Cloud生态系统的新手,请原谅我的无知和术语......

google-cloud-platform gcloud

17
推荐指数
1
解决办法
1万
查看次数

MVC应用中的Google OAuth访问令牌到期?

我按照此处的说明使用Google Oauth2编写了一个MVC应用程序:https: //developers.google.com/api-client-library/dotnet/guide/aaa_oauth#web_applications

我有访问令牌到期的问题.当访问令牌过期时,我在调用Google API时遇到异常:"访问令牌已过期,但我们无法刷新它"

初始身份验证是两种迭代机制:

第一次迭代AuthorizeAsync返回结果为空Credential,并填充RedirectUri:

因此,创建的授权URL是:

https://accounts.google.com/o/oauth2/auth?access_type=offline&response_type=code&client_id=MYCLIENTID&redirect_uri=http:%2F%2Flocalhost%2FHomepage%2FAuthCallback%2FIndexAsync&scope=https:%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar https:%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly&state=http:%2F%2Flocalhost%2FHomepage%2F95419199
Run Code Online (Sandbox Code Playgroud)

请注意,access_type = offline存在.所以我也应该恢复刷新令牌(不会发生).

在此输入图像描述

第二次迭代 - AuthorizeAsync返回带有填充的凭据且空RedirectUri的结果:

问题1 - 此时RefreshToken是否应该为空?

在此输入图像描述

记住结果,因为它被定义为静态的.

下一个请求 - 需要result.Credential调用Google Calendar API的日历操作:

问题2 - 如果访问令牌在那一刻到期(为了测试我只设置ExpiresInSeconds = 0),我调用RefreshTokenAsync方法,但它总是返回false!为什么?我在这里错过了什么?

当RefreshTokenAsync返回false时,处理什么是正确的方法?当前RedirectResult(result.RedirectUri)命令将失败,因为result.RedirectUri为null.

在此输入图像描述

asp.net-mvc google-oauth google-api-dotnet-client

7
推荐指数
1
解决办法
4220
查看次数

Google Analytics 3.0身份验证流程

编辑:最初这个问题询问我如何仅使用我的API密钥对Google AnalyticsAPI进行身份验证.正如vlatko指出的那样,这是不可能的.现在我只专注于让OAuth2工作.当我有机会时我会尝试vlatko的建议,并会更新问题.在此期间,您可以随意为您认为我缺少的任何事情贡献答案.


原始问题:

我正在尝试向Google AnalyticsAPI提出请求.我正在浏览Hello Analytics教程,尝试复制这些步骤.无论我尝试什么,我似乎都无法成功验证.

该教程说明如下:

打开您创建的文件HelloAnalyticsApi.java并添加以下方法:

private static Analytics initializeAnalytics() throws Exception {
    // Authorization.
    Credential credential = OAuth2Native.authorize(
        HTTP_TRANSPORT, JSON_FACTORY, new LocalServerReceiver(),
        Arrays.asList(AnalyticsScopes.ANALYTICS_READONLY));

    // Set up and return Google Analytics API client.
    return Analytics.builder(HTTP_TRANSPORT, JSON_FACTORY)
        .setApplicationName("Google-Analytics-Hello-Analytics-API-Sample")
        .setHttpRequestInitializer(credential)
        .build();
  }
Run Code Online (Sandbox Code Playgroud)

当用户遇到此脚本时,应用程序将尝试打开默认浏览器并将用户导航到google.com上托管的URL.此时,将提示用户登录并授予应用程序访问其数据的权限.一旦授予,应用程序将尝试从浏览器窗口读取代码,然后关闭窗口.

不同之处在于我正在尝试使用servlet应用程序执行此操作,并且我希望使用API​​密钥(而不是OAuth 2.0客户端ID)进行简单的API访问.我知道建议使用OAuth 2.0,但我只需要访问我拥有的数据并希望简化技术要求.我在这个页面上做出了这个决定,其中说:

API密钥是您使用控制台生成的唯一密钥.当您的应用程序需要调用在此项目中启用的API时,应用程序会将此密钥作为key={API_key} 参数传递给所有API请求.使用此密钥不需要任何用户操作或同意,不授予对任何帐户信息的访问权限,也不用于授权.

如果您只调用不需要用户数据的API(例如Google Custom Search API),那么API密钥可能更容易实现.但是,如果您的应用程序已使用OAuth 2.0访问令牌,则无需生成API密钥.事实上,如果OAuth 2.0访问令牌已经与相应的项目相关联,则Google会忽略已传递的API密钥.

我只是使用API​​密钥找不到许多auth流程的代码示例 - 我发现的大部分内容都使用客户端ID和下载的.p12文件显示,例如GoogleCredentialjavadoc.我能找到的一个示例应用程序是Google的Books Sample应用程序.无论如何,这是我尝试的(模仿教程中的第一个请求,它从管理API获取一个帐户列表):

Analytics analytics =
        new Analytics.Builder(httpTransport, jsonFactory, null)
        .setApplicationName("Dev …
Run Code Online (Sandbox Code Playgroud)

java google-api google-analytics-api oauth-2.0 google-api-java-client

6
推荐指数
1
解决办法
3825
查看次数

如何避免在离线GAE cron任务中"无法检索访问令牌:{"错误":"invalid_grant"}'?

这篇文章是如何在GAE/Python上进行'access_type = offline'/仅服务器OAuth2操作的后续内容.http = credentials.authorize(httplib2.Http())测试时该部件不再失败,但似乎它仍然由GAE的cron运行,它无法刷新我的access_token:

  1. 我可以通过电话手动完成我的工作/fetch,比如说在11:45.
  2. 立即安排/cronfetch在11:55工作,然后没有任何access_token问题.
  3. 但是,我今天早上醒来看到同样的 /cronfetch任务(除了时间,即我的非测试日常任务的01:00时)失败了:

    I 2013-06-10 05:53:51.324 make: Got type <class 'google.appengine.api.datastore_types.Blob'>
    I 2013-06-10 05:53:51.325 validate: Got type <class 'oauth2client.client.OAuth2Credentials'>
    I 2013-06-10 05:53:51.327 URL being requested: https://www.googleapis.com/youtube/v3/playlists?alt=json&part=snippet%2Cstatus
    I 2013-06-10 05:53:51.397 Refreshing due to a 401
    I 2013-06-10 05:53:51.420 make: Got type <class 'google.appengine.api.datastore_types.Blob'>
    I 2013-06-10 05:53:51.421 validate: Got type <class 'oauth2client.client.OAuth2Credentials'>
    I 2013-06-10 05:53:51.421 Refreshing access_token
    I 2013-06-10 05:53:51.458 Failed …
    Run Code Online (Sandbox Code Playgroud)

python google-app-engine google-api oauth-2.0 google-api-python-client

5
推荐指数
1
解决办法
8143
查看次数