在没有主密钥的情况下访问 Android 中的 Parse 服务器不会授予授权
Posted
技术标签:
【中文标题】在没有主密钥的情况下访问 Android 中的 Parse 服务器不会授予授权【英文标题】:Accessing the Parse server in Android without a master key doesn't give authorization 【发布时间】:2017-07-28 12:26:01 【问题描述】:当我使用以下内容访问我的服务器时,它可以工作:
curl -X POST \
-H "X-Parse-Application-Id: xxx" \
-H "X-Parse-Master-Key: yyy" \
-H "Content-Type: text/plain" \
-d '"score":1337,"playerName":"Sean Plott","cheatMode":false' \
http://xx.xx.xx.xx/parse/classes/Inventory
但是当我使用以下内容时,它不会:
curl -X POST \
-H "X-Parse-Application-Id: xxx" \
-H "Content-Type: text/plain" \
-d '"score":1337,"playerName":"Sean Plott","cheatMode":false' \
http://xx.xx.xx.xx/parse/classes/Inventory
我得到了这个错误:
"error":"unauthorized"
之前它工作得很好。我更改了一些设置并更新到最新的 Parse Server 版本,然后它停止工作,以及与之相关的所有其他应用程序。
网页版有效,表明 REST API 密钥没问题。我也可以通过仪表板完美地访问所有内容。唯一的问题是当我用android访问它时,它只能给出一个Application Id用于识别。
我是否更改了阻止此操作的错误设置?我认为我没有更改任何内容,尽管我没有关闭括号或在 server.js 文件中注释掉某些内容的可能性很小。
【问题讨论】:
您是否在 index.js 中添加了客户端密钥?当你初始化解析服务器?我知道当解析服务器启动时,他们将其设为可选(尽管推荐)。它不被认为是“秘密”,因为它可以从您的应用程序中反编译,但您绝对不应该将您的主密钥放入移动客户端。 看来我从代码中删除了所有clientKey
,但问题仍然存在。
我建议使用客户端密钥。你的服务器是如何初始化的?有或没有客户端密钥?请向您显示已编辑的 index.js。
【参考方案1】:
这里提出来了:https://github.com/parse-community/parse-server
Parse 服务器不再需要与 Parse 一起使用的客户端密钥。如果您仍然需要它们,也许是为了能够拒绝访问旧客户端,您可以在初始化时设置密钥。设置这些键中的任何一个都将要求所有请求提供已配置的键之一。
客户端密钥 javascriptKey restAPIKey dotNetKey
发生的事情是我的配置文件中有restAPIKey
,所以它也需要其他四个键中的任何一个。新的更新强制我的应用使用clientKey
或从配置中删除restAPIKey
。
【讨论】:
以上是关于在没有主密钥的情况下访问 Android 中的 Parse 服务器不会授予授权的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 Oauth 的情况下访问 Google 客户端 API(仅 API 密钥)