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

使用HttpUrlConnection将访问令牌发送回google api(401错误)

金令秋
2023-03-14

我想访问Google Analytics管理API来创建视图,并测试了OAuth Playway使用scope as Analytics获取访问令牌。编辑令牌被测试为有效。然而,我在运行代码时不断遇到401错误

我的代码如下,编码语言是java

//where urlStr is https://www.googleapis.com/analytics/v3/management/accounts/accountId/webproperties/webPropertyId/profiles with relevant account id, web propertyId and inclusive of request body

String authEncoded = Base64.encodeBytes(accessToken.getBytes());

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Authorization", "Basic " + authEncoded);
OutputStream output = connection.getOutputStream();


output.write(query.getBytes("UTF-8"));


InputStream response = connection.getInputStream();

以上代码在IOException的try catch中被包围。然而,来自输入流的响应总是给我一个错误

java.io.IOException:服务器返回了URL的HTTP响应代码:401:”

我有没有遗漏什么,或者有没有其他方法来设置要发送到google api的访问令牌?

共有1个答案

卢深
2023-03-14

使用oauth。io/android,您可以使用它提供的信息直接构建您的请求:

data.http(urlStr, new OAuthRequest() {
    private URL url;
    private HttpURLConnection con;

    @Override
    public void onSetURL(String _url) {
        try {
            url = new URL(_url);
            con = (HttpURLConnection) url.openConnection();
        } catch (Exception e) { e.printStackTrace(); }
    }

    @Override
    public void onSetHeader(String header, String value) {
        con.addRequestProperty(header, value);
    }

    @Override
    public void onReady() {
        InputStream response = con.getInputStream();
        // ...
    }
});

下面是一个完整的例子:https://github.com/oauth-io/oauth-android/blob/master/example/MainActivity.java

 类似资料:
  • 我正在尝试通过Twython验证用户的Twitter帐户 我得到了 Twitter API返回401(未经授权)、无效/过期令牌 回溯(最近一次调用): 文件“/Users/bharatagarwal/my-venv/lib/python2.7/site-packages/django/core/handers/base.py”,第149行,get_response-response=self。p

  • 我用http://localhost:8080/oauth2/authorization/google登录,并正常保存到google calendar。 获取访问令牌如下所示: 包含刷新标记。 但1小时后访问令牌过期,我不知道如何刷新它。无需重新登录。 使用长寿命刷新令牌获取新的访问令牌。 我在一个Spring发现了这个带有刷新令牌的谷歌OAuth2,但对我来说不起作用。

  • 我试图使用刷新令牌访问GoogleDrive API(我自己的A/C)--从OAuth Playground发布--如下所示。我正在使用我的刷新令牌和访问令牌进行脱机访问,但我得到了一个未经授权的401。我的代码是基于参考Belwo,以及google-api javadocs构建离线请求的建议

  • 为了发送和检索信封,我正在将我的应用编程接口后端与文档签名集成。我正在使用JWT Grant流。认证选项 在DocuSign开发环境中,我能够使用JWT流和DocuSign C#SKD检索访问令牌。然后我需要调用endpoint,以检索用于调用Docusign的基本uri字段。 当我提出GET请求时https://account-d.docusign.com/oauth/userinfo,包括授权

  • 如果访问令牌请求是有效的且被授权,授权服务器如5.1节所述颁发访问令牌以及可选的刷新令牌。如果请求因客户端身份验证失败或无效,授权服务器如5.2节所述的返回错误响应。 5.1. 成功响应 5.2. 错误响应

  • 首先,我对Github操作还很陌生。 我试图使用Github操作自动将我的回购推到带有访问令牌的Gitlab。但是,我总是得到错误 我尝试了GitLab Remote:HTTP Basic:Access denied and fatal Authentication,中的解决方案,但如果我将该行放在.yml中,它将中断并返回错误代码5。如果我不放那一行,我会得到上面描述的错误。 带有尝试历史记录的