使用具有中等内容 API 的 Firebase 存储 URL

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

我希望能够通过 API 检查上传到 Firebase 存储的图像是否为 NSFW。

我想通过moderatecontent.com 来做到这一点,这就是我尝试过的

  axios.get('https://api.moderatecontent.com/moderate/', {
    params: {
      key: '50f4e0ecf62fdef40abf30a102c8d055',
      url: img,
    },
  })

我遇到的问题是 Firebase URL 带有这样的令牌

https://firebasestorage.googleapis.com/v0/b/something.appspot.com/o/imagename?alt=media&token=SOMETOKEN

问题是令牌最终被用作请求中的参数。 我的 Firebase 存储规则是

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read: if true;
      allow write: if request.auth != null;
    }
  }
}

你知道如何让moderatecontent api直接访问url吗?

javascript axios firebase-storage
2个回答
0
投票

完全披露:我为moderatecontent.com工作

带有包含查询字符串的 URL 的 GET 请求通常不起作用,因为图像查询字符串会干扰 GET 查询字符串。

https://firebasestorage.googleapis.com/v0/b/something.appspot.com/o/imagename?alt=media&token=SOMETOKEN

https://api.moderatecontent.com/moderate/?url=https://firebasestorage.googleapis.com/v0/b/something.appspot.com/o/imagename?alt=media&token=SOMETOKEN&key=12344df5dfad1234e05fd617dee81234

moderatecontent.com API 包括对 POST 请求(以及 base64)的支持,这两个选项允许使用带有查询字符串的图像 URL。

例如:

var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
  'url': 'https://www.moderatecontent.com/img/sample_face_6.jpg',
  'key': '12344df5dfad1234e05fd617dee81234' 
});
var config = {
  method: 'post',
  url: 'https://api.moderatecontent.com/moderate/',
  headers: { 
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

0
投票

您能分享一下您是如何获取 api url 和 key 的吗?此 https://moderatecontent.com/ 不包含任何登录或注册或获取 api 密钥的过程。

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