我正在尝试设置帐户数据
我使用ids.setAccountInfo
GSObject param = new GSObject();
GSObject profile = new GSObject();
param.put("UID", user.getString("UID"));
profile.put("firstName", "FirstName");
param.put("profile", profile);
GSAPI.getInstance().sendRequest("ids.setAccountInfo", param, new GSResponseListener() {
@Override
public void onGSResponse(String s, GSResponse gsResponse, Object o) {
Log.d("ids.setAccountInfo", "----------------------------");
Log.d("ids.setAccountInfo", "s " + s);
Log.d("ids.setAccountInfo", "gsResponse " + gsResponse);
Log.d("ids.setAccountInfo", "----------------------------");
}
}, null);
并有回复
errorCode:400006
errorMessage:Invalid parameter value
errorDetails:Schema validation failed
data:{"validationErrors":[{"message":"write access mode violation","fieldName":"profile.firstName","errorCode":400025}],"statusCode":400,"errorMessage":"Invalid parameter value","time":"2015-08-13T11:48:14.664Z","errorDetails":"Schema validation failed","statusReason":"Bad Request","errorCode":400006,"callId":"e0ed6aebea144323b095849ae3ed40ee"}
如果我发送空配置文件或不发送它,那么成功
errorCode:0
errorMessage:null
errorDetails:null
data:{"statusCode":200,"errorCode":0,"time":"2015-08-13T11:53:19.738Z","callId":"e59b00cd09bf48a398586219f817930d","statusReason":"OK"}
答案 0 :(得分:3)
由于调用ids.setAccountInfo是从客户端完成的(假设使用了android SDK),而这些字段的配置文件架构写访问权限是“serverOnly'或者' clientCreate'。为了实现这一点,这些字段需要具有“客户端修改”功能。写访问。
使用ids.getSchema获取架构并查看字段写访问权。
可以通过拨打ids.setSchema进行更改,查看链接以获取更多详细信息。
writeAccess - 指定是否允许未签名的请求写入此字段。使用ids.getAccountInfo方法时,或通过使用Screen-Set设置字段时,此属性适用。支持的值为:
- " serverOnly" (默认) - 仅允许来自服务器的已签名请求。
- " clientCreate" - 来自客户端的未签名请求只有在之前未设置时才允许写入此字段。
- " clientModify" - 允许来自客户端的未签名请求写入此字段并修改现有值。