如何在 Apps 脚本中使用 OAuth signature_type?

问题描述 投票:0回答:1

我在 Python 中有以下适用于 api 的 OAuth 身份验证脚本。我想使用

signature_type='query'
将其转换为在 Google Apps 脚本中运行。我该怎么办?

from requests_oauthlib import OAuth1

BASE_URL = '...'
CLIENT_KEY = '...'
CLIENT_SECRET = '...'

def get_oauth_query():
    """ Get OAuth Query """
 
    queryoauth = OAuth1(CLIENT_KEY, CLIENT_SECRET, signature_type="query")
    return queryoauth

url = BASE_URL + '/user/v2/credentials/'
queryoauth = OAuth1(CLIENT_KEY, CLIENT_SECRET, signature_type="query")
request = requests.get(url, auth=get_oauth_query())
content = request.json()
credentialId = content[0]["id"]
 
print(credentialId)

P.S.:我无法在工作笔记本电脑上使用图书馆服务,但我可以将以下OAuth脚本复制到我的项目中。

api google-apps-script oauth
1个回答
1
投票

我认为在

signature_type="query"
的情况下,值被用作查询参数。根据您的问题,当您想将 OAuth1 用于 Apps Script 时,如何按如下方式转换您的 Python 脚本?

在此示例脚本中,假设使用了 OAuth1 for Apps Script。请注意这一点。

修改脚本:

function myFunction() {
  const BASE_URL = "...";
  const CLIENT_KEY = "...";
  const CLIENT_SECRET = "...";

  const service = OAuth1.createService("sample")
    .setConsumerKey(CLIENT_KEY)
    .setConsumerSecret(CLIENT_SECRET)
    .setParamLocation("uri-query")
    .setAccessToken("", "");
  const url = BASE_URL + "/user/v2/credentials/";
  const response = service.fetch(url);

  // console.log(response.getContentText()); // You can see the raw response value using this line.

  const content = JSON.parse(response.getContentText());
  const credentialId = content[0]["id"];
  console.log(credentialId);
}
  • signature_type="query"
    的 Python 脚本中,使用了
    setParamLocation("uri-query")

  • 我认为这个请求和你展示的Python脚本是一样的。但是,如果发生错误,请再次确认您的

    BASE_URL
    CLIENT_KEY
    CLIENT_SECRET
    的值。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.