我尝试对 Google Analytics 中的服务帐户进行授权 API 调用(HTTP/REST)。使用此文档:https ://developers.google.com/identity/protocols/OAuth2ServiceAccount
我只是使用 HTTP/REST 请求来测试。
所以我有服务帐户的私钥文件:
{
"type": "service_account",
"project_id": "test-x",
"private_key_id": "some_private_key_id",
"private_key": "-----BEGIN PRIVATE KEY----- some_private_key -----END PRIVATE KEY-----",
"client_email": "test-01@test-x.iam.gserviceaccount.com",
"client_id": "some_client_id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test-01%40test-x.iam.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)
我根据 client_email 创建 JWT:test-01@test-x.iam.gserviceaccount.com
标题:
{"alg":"RS256","typ":"JWT"}
Run Code Online (Sandbox Code Playgroud)
索赔集:
{
"iss": "test-01@test-x.iam.gserviceaccount.com",
"scope": "https://www.googleapis.com/auth/analytics.readonly",
"aud": "https://www.googleapis.com/oauth2/v4/token",
"exp": 1488820112,
"iat": 1488816522
}
Run Code Online (Sandbox Code Playgroud)
iat - 我刚刚设置了当前
exp - 当前 + 1 小时,
我使用此服务来创建签名: https: //jwt.io/#debugger
它生成编码值,我尝试将其用于访问令牌请求
当我尝试使用“编码”字段生成的结果时:
curl -d 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=JWT_that_has_been_signed' https://www.googleapis.com/oauth2/v4/token
Run Code Online (Sandbox Code Playgroud)
结果:
{
"error": …
Run Code Online (Sandbox Code Playgroud) 我尝试自定义Keystonejs Admin UI主题:更改原色等。
所以,我要覆盖keystone.less它位于node_modules:
.
|____node_modules
| |____keystone
| | |____public
| | | |____styles
| | | | |____keystone.less
|____public
| |____styles
| | |____keystone.less // This will overwrite the UI
Run Code Online (Sandbox Code Playgroud)
新的 keystone.less 内容:
// Elemental
// ------------------------------
@import "@{elementalPath}/less/elemental.less";
// KEYSTONE VARIABLES
@import "../../node_modules/keystone/admin/public/styles/variables.less";
// KEYSTONE AUTH
@import "../../node_modules/keystone/admin/public/styles/auth.less";
// KEYSTONE SETUP
@import "../../node_modules/keystone/admin/public/styles/keystone/animation.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/base.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/dashboard.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/forms.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/navigation.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/tables.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/utils.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/list.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/list-dropzone.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/item.less";
@import "../../node_modules/keystone/admin/public/styles/keystone/toolbar.less"; …
Run Code Online (Sandbox Code Playgroud) 看起来我的问题和这个问题一样:Magento Rest Api Invalid XML 但它仍然没有得到回答..
我刚刚在我的本地主机上安装了带有示例数据的 magento 1.9 并尝试测试 REST API。我在管理面板中将 REST 角色和 REST 属性设置为 ALL。但是当我尝试在浏览器中输入以下 URL 时:http://magentohost/api/rest/products?limit=2
我收到回复:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<script/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>Sender</faultcode>
<faultstring>Invalid XML</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)
error_log 为空,
访问日志:
GET /magentohost/api/rest/products?limit=2 HTTP/1.1" 500
Run Code Online (Sandbox Code Playgroud)
看起来我在设置中遗漏了一些东西..感谢您的帮助!
我尝试在Apache NiFi中使用InvokeHttpProcessor来执行具有复杂JSON主体的POST请求.相应的本教程:http://www.tomaszezula.com/2016/10/30/nifi-and-http-post-configuration
我知道如何使用UpdateAttribute处理器添加名称/值对,然后通过AttributesToJSON应用其他转换.
但是如何处理复杂的JSON?例如,我必须向GoogleAnalytics报告API执行请求,因此我需要执行此请求:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dateRanges": [{"startDate": "2014-11-01", "endDate": "2014-11-30"}],
"metrics": [{"expression": "ga:users"}]
}
]
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
rest ×3
apache-nifi ×1
api ×1
fault ×1
frontend ×1
javascript ×1
json ×1
jwt ×1
keystonejs ×1
less ×1
magento ×1
node.js ×1
oauth-2.0 ×1
xml ×1