我有一个与appwrite函数相关的问题,我在本教程中的示例.I部署了该函数之后创建了一个函数,并且在appwrite控制台中运行得很好。但是我做了一个web应用程序来测试这个函数,安装了sdk并调用了这个函数.但是总是显示带有401代码的消息,表示来宾用户没有写权限。我返回到appwrite面板并检查了该函数的所有权限,但仍然显示该错误代码与来宾用户.的写入权限问题相同。
返回的错误:
{message: "User (role: guest) missing scope (execution.write)", code: 401,…}
code: 401
message: "User (role: guest) missing scope (execution.write)"
type: "general_unauthorized_scope"
version: "0.13.4我查看了文档中的示例,没有找到可以在SDK中为函数调用指定用户的位置。
我在这个问题上困了5天,有人知道怎么解决,或者能给我一些方向?
在数字海洋服务器上运行的应用程序版本0.13.4。
发布于 2022-05-10 21:08:42
阿海~
您所缺少的要么是通过登录的活动会话:
const sdk = new Appwrite();
sdk
.setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
.setProject('5df5acd0d48c2') // Your project ID
;
let promise = sdk.account.createSession('email@example.com', 'password');
promise.then(function (response) {
console.log(response); // Success
}, function (error) {
console.log(error); // Failure
});或者,您可以转到函数的“设置”选项卡,并将执行权限更改为包含“角色:来宾”。
出于明显的安全原因,我不赞成使用第二个选项(每个人都可以执行您的功能)。
干杯,
文森
发布于 2022-05-07 06:50:32
为了能够执行函数,您需要有一个活动会话,您是否已登录?
发布于 2022-05-23 12:42:02
几周前也有同样的问题。Appwrite不为应用程序函数登录或生成任何会话令牌。它就像其他程序一样执行它们。因此,你必须先证明自己。您可以通过登录(如Vincent回答)或使用api令牌来实现这一点。后者为您提供了一个选项,即为该函数提供执行其工作所需的权限。稍后,您可以通过环境变量将api密钥传递给函数。
要开始,只需前往api-键在appwrite仪表板上,并点击“添加api-键”。切换函数所需的设置,并生成api键。保存密钥,然后转到您的功能。您可以在函数设置的底部设置函数的环境变量。例如,将api键设置为键APPWRITE_FUNCTION_API_KEY,函数键作为值。
现在访问函数代码中的键,并使用client.setKey为每个调用应用程序编写使用键。
干杯,妮可
https://stackoverflow.com/questions/72036923
复制相似问题