使用postman访问firebase REST API

mf98qq94  于 2022-11-23  发布在  Postman
关注(0)|答案(7)|浏览(227)

我尝试使用postman对firebase进行REST API调用。我已经设法从firebase读取,而我的安全规则是允许所有用户,包括未经授权的用户。
但是当我使用这个规则时:

{"rules":{".read": "auth != null", ".write": "auth != null"}}

我得到'错误':我为google的web oauth2.0客户端做了请求令牌,并得到了authorization_code令牌。
我尝试在URL和标头中使用令牌,尝试使用GET & POST请求,但仍然被拒绝。
请帮忙,先谢了

vdgimpew

vdgimpew1#

上面的答案对我不起作用。
对我有用的东西

项目设置(左上角齿轮)-〉服务帐户(最右侧选项卡)-〉数据库秘密(左侧菜单)-〉向下滚动,将鼠标悬停在bulltets上并单击显示

使用此密钥作为验证密钥,例如.../mycollection.json?auth=HERE

oyjwcjzk

oyjwcjzk2#

对我来说,它是这样工作的:


您可以从哪里获得此AUTH_KEY?
你从你的Project Settings -> Database -> Secret Key得到这个密钥

0ve6wy6x

0ve6wy6x3#

试试这个

https://your-database-url/users.json?auth=YOUR_AUTH_KEY

响应是USERS节点的JSON

z0qdvdin

z0qdvdin4#

我创建了一个Postman预请求脚本,用于帮助创建身份验证:使用Firebase Auth. https://gist.github.com/moneal/af2d988a770c3957df11e3360af62635测试API时,应保存大量的复制粘贴操作
发布时的脚本副本:

/**
 * This script expects the global variables 'refresh_token' and 'firebase_api_key' to be set. 'firebase_api_key' can be found
 * in the Firebase console under project settings then 'Web API Key'.
 * 'refresh_token' as to be gathered from watching the network requests to https://securetoken.googleapis.com/v1/token from 
 * your Firebase app, look for the formdata values
 * 
 * If all the data is found it makes a request to get a new token and sets a 'auth_jwt' environment variable and updates the 
 * global 'refresh_token'.
 * 
 * Requests that need authentication should have a header with a key of 'Authentication' and value of '{{auth_jwt}}'
 *
 * Currently the nested assertions silently fail, I don't know why.
 */
pm.expect(pm.globals.has('refresh_token')).to.be.true;
pm.expect(pm.globals.has('firebase_api_key')).to.be.true;

var sdk = require('postman-collection'),
  tokenRequest = new sdk.Request({
    url: 'https://securetoken.googleapis.com/v1/token',
    method: 'POST',
    body: {
      mode: 'urlencoded',
      urlencoded: [{
          type: 'text',
          key: 'key',
          value: pm.globals.get('firebase_api_key')
        },
        {
          type: 'text',
          key: 'grant_type',
          value: 'refresh_token'
        },
        {
          type: 'text',
          key: 'refresh_token',
          value: pm.globals.get('refresh_token')
        },
      ]
    }
  });

pm.sendRequest(tokenRequest, function(err, response) {

  pm.test('request for access token was ok', function() {
    pm.expect(response).to.be.ok();
  });

  const json = response.json();
  pm.expect(json).to.an('object');

  pm.test('response json has needed properties', function() {

    pm.expect(json).to.have.own.property('access_token');
    pm.expect(json).to.have.own.property('token_type');
    pm.expect(json).to.have.own.property('refresh_token');

    const accessToken = json.access_token;
    const tokenType = json.token_type;
    const refreshToken = json.refresh_token;

    pm.environment.set('auth_jwt', tokenType + ' ' + accessToken);
    pm.globals.set('refresh_token', refreshToken);

  });

});
smdnsysy

smdnsysy5#

  • 注意:将此答案添加为此处列出得所有选项已过时或不起作用(主要是由于缺少步骤).*

最好的方法,使它与 Postman 工作是使用谷歌OAuth2访问令牌。提供的链接描述了完整的长度,但我已经添加了快速步骤。

步骤1:下载服务帐户. json

步骤2:在Java中生成访问令牌(为此提供了其他语言中描述支持的链接)

  • 请确保包含以下依赖项:
implementation 'com.google.api-client:google-api-client:1.25.0'

<dependency>
   <groupId>com.google.api-client</groupId>
   <artifactId>google-api-client</artifactId>
   <version>1.25.0</version>
 </dependency>
  • 运行此代码以生成令牌(复制自google的javadocs)
// Load the service account key JSON file
     FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

     GoogleCredential scoped = GoogleCredential
     .fromStream(serviceAccount)
     .createScoped(
         Arrays.asList(
           "https://www.googleapis.com/auth/firebase.database",
           "https://www.googleapis.com/auth/userinfo.email"
         )
     );
     // Use the Google credential to generate an access token
     scoped.refreshToken();
     String token = scoped.getAccessToken();
     System.out.println(token);

步骤3:在Postman中使用令牌

mccptt67

mccptt676#

通过Postman获取数据非常简单:我是这样做的

1您的数据库URL

https://YOUR_PROJECT_URL.firebaseio.com/YOUR_STRUCTURE/CLASS.json

2在标头中添加API密钥作为身份验证

auth = API_KEY的值
例如:

eqfvzcg8

eqfvzcg87#

是的,是的,是的,我们可以和 Postman 一起使用消防基地休息
1.我们如何在 Postman 中使用火力?
--(步骤1)复制您的firebase数据库URL --(步骤2)将其粘贴到您的postman URL中--(步骤3)在最后添加.json,如下所示
enter image description here
--(第4步)然后使用您firebase数据库并创建REST API

相关问题