Gigya ー 「=10=」 ー 「=11=」

Gigya - socialize.shortenURL - Android

我正在尝试使用 Gigya 的 Android SDK(版本:3.3.0)中的 socialize.shortenURL

这是我正在尝试做的一个例子:

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"
}

我的问题是:我真的需要 "manually" 这个请求的签名吗?

出于安全考虑,我真的很想避免在 Android 客户端上使用密钥。

我正在对 REST api 中列出的另一个端点执行类似的请求,没有任何问题,也不必使用我的密钥(我知道 SDK 正在为我自己制作签名,我只是这样做不明白为什么 socialize.shortenURL)

上没有发生这种情况

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

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

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