2

我正在尝试使用socialize.shortenURLGigya 的 Android SDK(版本: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

4

1 回答 1

2

有一些 Gigya REST API 调用只能在服务器端上下文中使用;socialize.shortenURL是其中之一。这意味着您不能直接通过任何客户端 SDK(Android / iOS / 等)调用 REST API 端点,否则您将遇到问题中显示的错误。

您不应尝试执行请求签名或任何需要在您的 Android 应用程序中包含您的 Gigya 合作伙伴密钥的操作,因为这不安全并且可能无意中暴露您的合作伙伴密钥。

对于像这样的 REST 端点,Gigya 通常建议您通过服务器实现代理 REST API 调用。此服务器端实现将通过您的移动应用程序调用,直接在服务器端调用 REST 端点,然后将信息代理回您的移动应用程序。

于 2016-01-12T11:51:07.000 回答