我正在尝试使用Gigya Android SDK中的socialize.shortenURL
(版本: 3.3.0 )。
以下是我尝试做的一个例子:
GSObject params = new GSObject();
params.put("url", url);
GSAPI.getInstance().sendRequest("socialize.shortenURL",
params,
new GSResponseListener() {
@Override
public void onGSResponse(String s, GSResponse r, Object o) {
// Do something with the returned url...
}
},
null);
问题在于我总是得到Gigya的以下回复:
{
"callId": "XXXXXXXXXXXXXXXXXX",
"errorCode": 400002,
"errorDetails": "Missing required parameter: No secret or signature were provided. Request could not be verified.",
"errorMessage": "Missing required parameter",
"statusCode": 400,
"statusReason": "Bad Request",
"time": "XXXXXXXXXXXXXXXXXX"
}
我的问题是:我是否真的需要手动制作"这个请求的签名?
出于安全考虑,我真的想避免在Android客户端上使用密钥。
我对REST api中列出的其他端点做了类似的请求,没有任何问题,也没有使用我的密钥(我知道SDK正在为自己制作签名,我只是不明白为什么这样做没有发生在socialize.shortenURL
)
答案 0 :(得分:2)
有一些Gigya REST API调用只能从服务器端上下文中获得; socialize.shortenURL
就是其中之一。这意味着您无法直接通过任何客户端SDK(Android / iOS /等)调用REST API端点,否则您将遇到问题中显示的错误。
您不应尝试在Android应用程序中执行请求或任何需要包含Gigya合作伙伴密钥的操作的签名,因为这不安全且可能无意中泄露了您的合作伙伴密钥。
对于像这样的REST端点,Gigya通常建议您通过服务器实现代理REST API调用。此服务器端实现将通过您的移动应用程序调用,直接在服务器端调用REST端点,然后将信息代理回您的移动应用程序。