googleapis / googleapis/google-api-nodejs-client

Getting permission denied while getting subscription details from pub/sub events using service account credentials

Open
#3,445 3 comments 0 reactions 1 assignee Claimed by @sofisl View on GitHub
priority: p3 type: question
Dominant language
TypeScript
Stars
12.2k
Forks
2k
Avg merge
1d 9h
Merged PRs (30d)
24

Description

Hi there,
I used google cloud pub/sub api to receive messages using the endpoint url, here I was able to receive events in the backend, but when I tried getting subscription details using the `service account` credentails, I got permission denied. It worked successfully when tried using OAuth redirecting to the browser, but I need to handle it in the backend to store/modify subscription details in the database, so OAuth2 doesn't seem to be viable option.

I have tried the following code snippet.

```
require('dotenv').config();
(async () => {
const subscription = {
message: {
data: '',
messageId: '10553462436995277',
message_id: '10553462436995277',
publishTime: '2024-02-27T12:30:55.34Z',
publish_time: '2024-02-27T12:30:55.34Z'
},
subscription: '',
};

const decodedData = Buffer.from(subscription.message.data, 'base64').toString('utf-8');
console.log(decodedData);
const {
subscriptionNotification: { purchaseToken, subscriptionId },
packageName,
} = JSON.parse(decodedData);

console.log(JSON.parse(decodedData));

const { google } = require('googleapis');

const androidpublisher = google.androidpublisher({
version: 'v3',
auth: new google.auth.JWT({
keyFile: './creds.json', // service account creds, i saw in the google console that it has owner permissions
scopes: ['https://www.googleapis.com/auth/androidpublisher'],
}),
});
const response = await androidpublisher.purchases.subscriptions.get({
packageName: packageName,
subscriptionId: subscriptionId,
token: purchaseToken,
});
console.log(response);
})();
```

The error I am getting is:
```
{
status: 401,
code: 401,
errors: [
{
message: 'The current user has insufficient permissions to perform the requested operation.',
domain: 'androidpublisher',
reason: 'permissionDenied'
}
],
}
```
these are permissions I saw in the google cloud console.
![image](https://github.com/googleapis/google-api-nodejs-client/assets/15158756/32aac519-78c0-4b15-8b20-fc0187f9683c)

Don't know what to do in this case!
Thanks in advance!
@proppy @dazuma @jskeet @hansoksendahl @andrelaszlo

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.