Hi everyone,
I’m currently implementing Forge Remote with offline user impersonation, but I’m consistently hitting the following error:
**No Atlassian OAuth token found for this user and extension
**
I’ve already followed the official docs:
Flow:
-
Backend calls Forge webtrigger
-
Forge callback remote backend with:
-
Authorization: Bearer <FIT> -
x-forge-oauth-system
-
-
Backend:
-
decodes FIT → extracts
cloudId+apiBaseUrl -
calls GraphQL
offlineUserAuthToken -
uses returned token to call Jira REST API
-
GraphQL Request:
mutation GetUserToken($input: OfflineUserAuthTokenInput!) {
offlineUserAuthToken(input: $input) {
success
authToken {
token
ttl
}
errors {
message
extensions {
errorType
}
}
}
}
Manifest:
permissions:
scopes:
read:app-system-token: {}
read:jira-user:
allowImpersonation: true
read:jira-work:
allowImpersonation: true
write:jira-work:
allowImpersonation: true
manage:jira-configuration: {}
read:email-address:jira: {}
storage:app: {}
What I’ve verified
-
FIT token is valid and decoded correctly
-
x-forge-oauth-systemtoken is present and used for GraphQL -
cloudIdandapiBaseUrlare correct from FIT -
GraphQL query structure is valid (no validation errors)
-
Users exist in Jira and accountId is correct
-
Users are added as Forge app contributors
-
App is deployed and upgraded (
forge deploy,forge install --upgrade) -
Tested with:
-
app owner
-
contributor users
-
-
Added a jira:adminPage module and opened it as the user (to establish app context)
GraphQL consistently returns:
{
"success": false,
"authToken": null,
"errors": [
{
"message": "No Atlassian OAuth token found for this user and extension",
"extensions":[
{
"errorType":"MISSING_USER_CONSENT"
}
]
}
]
}
My questions is:
- Is there an additional step required to establish a user ↔ app OAuth relationship for Forge Remote impersonation?
- Does offline impersonation require:
-
Marketplace distribution, or
-
Direct distribution
for user tokens to be issued (beyond contributors)?
-
- Does invoking from a webtrigger module affect the ability to generate offline user tokens?
- Is there any requirement for:
-
asUser()invocation prior to remote calls, or -
specific module types (UI vs webtrigger) to enable user token issuance?
-
My goal is Backend → Forge → Jira (comment as real user) but currently limited to asApp() behavior.
Any clarification or guidance would be really appreciated.
Happy to provide logs or additional details if needed.
Thanks! ![]()