Firebase Error: Missing or insufficient permissions only when ran from device
Trying to update a document within my React Native app works fine when I run from the simulator, but fails with error: "Missing or insufficient permissions" when I run from an actual device. I've made sure I'm logged in.
example code that would raise the error:
listing.doc.ref.update(
quantityAvailable: qty
);
//called from an authenticated user who is the author of the listing.
//So the request.auth.uid is equal to the listing.user.id
The pertinent database rules are as follows:
match /listings/document=**
allow read;
allow create: if isSignedIn();
allow update: if isOwner();
...
function existingData()
return resource.data
function incomingData()
return request.resource.data
function currentUser()
return request.auth
function isSignedIn()
return request.auth != null;
function isOwner()
return request.auth.uid == existingData().user.id;
firebase google-cloud-firestore firebase-security-rules
add a comment |
Trying to update a document within my React Native app works fine when I run from the simulator, but fails with error: "Missing or insufficient permissions" when I run from an actual device. I've made sure I'm logged in.
example code that would raise the error:
listing.doc.ref.update(
quantityAvailable: qty
);
//called from an authenticated user who is the author of the listing.
//So the request.auth.uid is equal to the listing.user.id
The pertinent database rules are as follows:
match /listings/document=**
allow read;
allow create: if isSignedIn();
allow update: if isOwner();
...
function existingData()
return resource.data
function incomingData()
return request.resource.data
function currentUser()
return request.auth
function isSignedIn()
return request.auth != null;
function isOwner()
return request.auth.uid == existingData().user.id;
firebase google-cloud-firestore firebase-security-rules
Please edit your question to include the code that raises the error.
– Frank van Puffelen
Nov 13 '18 at 3:35
@FrankvanPuffelen, good point, I have edited the question. Thanks.
– Travis Beck
Nov 13 '18 at 3:49
You can add parameters to your isOwner function like thisisOwner(userId)
so the condition to your function isOwner will be like thisrequest.auth.uid === userId
then replace the default wildcarddocument=**
withuserId
– Socrates Tuas
Nov 13 '18 at 4:13
add a comment |
Trying to update a document within my React Native app works fine when I run from the simulator, but fails with error: "Missing or insufficient permissions" when I run from an actual device. I've made sure I'm logged in.
example code that would raise the error:
listing.doc.ref.update(
quantityAvailable: qty
);
//called from an authenticated user who is the author of the listing.
//So the request.auth.uid is equal to the listing.user.id
The pertinent database rules are as follows:
match /listings/document=**
allow read;
allow create: if isSignedIn();
allow update: if isOwner();
...
function existingData()
return resource.data
function incomingData()
return request.resource.data
function currentUser()
return request.auth
function isSignedIn()
return request.auth != null;
function isOwner()
return request.auth.uid == existingData().user.id;
firebase google-cloud-firestore firebase-security-rules
Trying to update a document within my React Native app works fine when I run from the simulator, but fails with error: "Missing or insufficient permissions" when I run from an actual device. I've made sure I'm logged in.
example code that would raise the error:
listing.doc.ref.update(
quantityAvailable: qty
);
//called from an authenticated user who is the author of the listing.
//So the request.auth.uid is equal to the listing.user.id
The pertinent database rules are as follows:
match /listings/document=**
allow read;
allow create: if isSignedIn();
allow update: if isOwner();
...
function existingData()
return resource.data
function incomingData()
return request.resource.data
function currentUser()
return request.auth
function isSignedIn()
return request.auth != null;
function isOwner()
return request.auth.uid == existingData().user.id;
firebase google-cloud-firestore firebase-security-rules
firebase google-cloud-firestore firebase-security-rules
edited Nov 13 '18 at 3:48
Travis Beck
asked Nov 12 '18 at 23:45
Travis BeckTravis Beck
833818
833818
Please edit your question to include the code that raises the error.
– Frank van Puffelen
Nov 13 '18 at 3:35
@FrankvanPuffelen, good point, I have edited the question. Thanks.
– Travis Beck
Nov 13 '18 at 3:49
You can add parameters to your isOwner function like thisisOwner(userId)
so the condition to your function isOwner will be like thisrequest.auth.uid === userId
then replace the default wildcarddocument=**
withuserId
– Socrates Tuas
Nov 13 '18 at 4:13
add a comment |
Please edit your question to include the code that raises the error.
– Frank van Puffelen
Nov 13 '18 at 3:35
@FrankvanPuffelen, good point, I have edited the question. Thanks.
– Travis Beck
Nov 13 '18 at 3:49
You can add parameters to your isOwner function like thisisOwner(userId)
so the condition to your function isOwner will be like thisrequest.auth.uid === userId
then replace the default wildcarddocument=**
withuserId
– Socrates Tuas
Nov 13 '18 at 4:13
Please edit your question to include the code that raises the error.
– Frank van Puffelen
Nov 13 '18 at 3:35
Please edit your question to include the code that raises the error.
– Frank van Puffelen
Nov 13 '18 at 3:35
@FrankvanPuffelen, good point, I have edited the question. Thanks.
– Travis Beck
Nov 13 '18 at 3:49
@FrankvanPuffelen, good point, I have edited the question. Thanks.
– Travis Beck
Nov 13 '18 at 3:49
You can add parameters to your isOwner function like this
isOwner(userId)
so the condition to your function isOwner will be like this request.auth.uid === userId
then replace the default wildcard document=**
with userId
– Socrates Tuas
Nov 13 '18 at 4:13
You can add parameters to your isOwner function like this
isOwner(userId)
so the condition to your function isOwner will be like this request.auth.uid === userId
then replace the default wildcard document=**
with userId
– Socrates Tuas
Nov 13 '18 at 4:13
add a comment |
1 Answer
1
active
oldest
votes
I was able to fix it by switching to the react-native-firebase library instead of the regular node.js Firebase library. Turns out it's not a permission problem, my permissions are fine, it was a networking issue with react native and the node.js firebase library.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271736%2ffirebase-error-missing-or-insufficient-permissions-only-when-ran-from-device%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I was able to fix it by switching to the react-native-firebase library instead of the regular node.js Firebase library. Turns out it's not a permission problem, my permissions are fine, it was a networking issue with react native and the node.js firebase library.
add a comment |
I was able to fix it by switching to the react-native-firebase library instead of the regular node.js Firebase library. Turns out it's not a permission problem, my permissions are fine, it was a networking issue with react native and the node.js firebase library.
add a comment |
I was able to fix it by switching to the react-native-firebase library instead of the regular node.js Firebase library. Turns out it's not a permission problem, my permissions are fine, it was a networking issue with react native and the node.js firebase library.
I was able to fix it by switching to the react-native-firebase library instead of the regular node.js Firebase library. Turns out it's not a permission problem, my permissions are fine, it was a networking issue with react native and the node.js firebase library.
answered Nov 13 '18 at 16:36
Travis BeckTravis Beck
833818
833818
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271736%2ffirebase-error-missing-or-insufficient-permissions-only-when-ran-from-device%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Please edit your question to include the code that raises the error.
– Frank van Puffelen
Nov 13 '18 at 3:35
@FrankvanPuffelen, good point, I have edited the question. Thanks.
– Travis Beck
Nov 13 '18 at 3:49
You can add parameters to your isOwner function like this
isOwner(userId)
so the condition to your function isOwner will be like thisrequest.auth.uid === userId
then replace the default wildcarddocument=**
withuserId
– Socrates Tuas
Nov 13 '18 at 4:13