Parse platform 错误未经授权:尝试使用parse向SPECEFC设备Android parse发送通知时需要主密钥
我正在尝试使用android中的Parse向specefic设备发送通知。 这是我的安装代码:Parse platform 错误未经授权:尝试使用parse向SPECEFC设备Android parse发送通知时需要主密钥,parse-platform,parse-android-sdk,Parse Platform,Parse Android Sdk,我正在尝试使用android中的Parse向specefic设备发送通知。 这是我的安装代码: ParseInstallation installation = ParseInstallation.getCurrentInstallation(); installation.put("device_id", "1234567890"); installation.saveInBackground(new SaveCallback() { @Override
ParseInstallation installation = ParseInstallation.getCurrentInstallation();
installation.put("device_id", "1234567890");
installation.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
Log.d(TAG, "done1: "+e);
}
});
这是我向已经安装的specefic设备发送通知的代码:
ParseQuery query = ParseInstallation.getQuery();
query.whereEqualTo("device_id", "1234567890");
ParsePush push = new ParsePush();
push.setQuery(query);
push.setMessage("salamm");
push.sendInBackground(new SendCallback() {
@Override
public void done(ParseException e) {
Log.d(TAG, "done: "+e);
}
});
我在日志中得到这个错误:
完成:com.parse.ParseRequest$ParseRequestException:未经授权:需要主密钥
有人能帮我吗?解析服务器mo不再支持客户端推送,因为这是一个严重的安全风险。最好的选择是将此逻辑放入云代码函数中,并通过Android SDK调用该函数 有关更多信息,请参阅上的部分
请记住添加use
{useMasterKey:true}
出于安全原因,不建议直接从前端发送推送。想象一下,一个黑客可能会向你所有的客户群发送一个糟糕的消息
建议的方法是:
-创建一个云代码函数来发送推送
-Android应用程序将调用此云代码函数
这就是您的云代码功能应该是什么样子的:
Parse.Cloud.define('sendPush', function(request, response) {
const query = new Parse.Query(Parse.Installation);
query.equalTo('device_id', request.params.deviceId);
Parse.Push.send({
where: query,
data: {
alert: request.params.message
}
},
{ useMasterKey: true }
)
.then(function() {
response.success();
}, function(error) {
response.error(error);
});
});
HashMap<String, String> params = new HashMap();
params.put("deviceId", "1234567890");
params.put("message", "salamm");
ParseCloud.callFunctionInBackground("sendPush", params, new
FunctionCallback<Object>() {
@Override
public void done(Object result, ParseException e) {
Log.d(TAG, "done: "+e);
}
});
这就是您的客户机代码应该是什么样子的:
Parse.Cloud.define('sendPush', function(request, response) {
const query = new Parse.Query(Parse.Installation);
query.equalTo('device_id', request.params.deviceId);
Parse.Push.send({
where: query,
data: {
alert: request.params.message
}
},
{ useMasterKey: true }
)
.then(function() {
response.success();
}, function(error) {
response.error(error);
});
});
HashMap<String, String> params = new HashMap();
params.put("deviceId", "1234567890");
params.put("message", "salamm");
ParseCloud.callFunctionInBackground("sendPush", params, new
FunctionCallback<Object>() {
@Override
public void done(Object result, ParseException e) {
Log.d(TAG, "done: "+e);
}
});
HashMap params=newhashmap();
参数put(“设备ID”、“1234567890”);
参数put(“消息”、“萨拉姆”);
ParseCloud.callFunctionInBackground(“sendPush”),参数,新
FunctionCallback(){
@凌驾
公共void完成(对象结果,parsee异常){
日志d(标签“完成:”+e);
}
});