vkontakte调用api方法失败

时间:2012-04-12 07:23:54

标签: flash vk

我尝试调用VK方法,但失败并出现错误:

private function deletePost(postId:String):int
        {
            var sigStr:String = FlashVarsVO.user_id + "api_id="+FlashVarsVO.app_id+"method=wall.deletev=3.09bdnOW93DM3Oy5lcSHr4";
            var sig:String = MD5.hash("sigStr");
            var str:String = "http://api.vk.com/api.php?api_id="+FlashVarsVO.app_id+"&method=wall.delete&v=3.0&format=JSON&post_id="+postId+ "&sid="+ FlashVarsVO.access_token +"&sig=" +sig;
            trace(str);

        //  sig = md5(viewer_idname1=value1name2=value2secret)

            var req:URLRequest = new URLRequest(str);
            var uLdr:URLLoader = new URLLoader(req);
            uLdr.addEventListener(Event.COMPLETE, onComplete);
            uLdr.addEventListener(ErrorEvent.ERROR, onErrorHandler);
            uLdr.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

            return 0;
        }

http://api.vk.com/api.php?api_id=1111111&method=wall.delete&v=3.0&format=JSON&post_id=1629&sid=bf472ebcf2eba19cbdb56d86a8bd477603bbd76bd6c5356e4d003815c7cf3a4&sig=62b1265890d247efdd939f616cad1e8d

对于此请求,vk.com向我发送了这样的回复:

{"error":{"error_code":4,"error_msg":"Incorrect signature: Session can be expired, revoked by user or connected with different IP address","request_params":[{"key":"api_id","value":"1111111"},{"key":"method","value":"wall.delete"},{"key":"v","value":"3.0"},{"key":"format","value":"JSON"},{"key":"post_id","value":"1629"},{"key":"sid","value":"bf472ebcf2eba19cbdb56d86a8bd477603bbd76bd6c5356e4d003815c7cf3a4"},{"key":"sig","value":"62b1265890d247efdd939f616cad1e8d"}]}}

如何使其可行?任何人都面临这样的错误?感谢。

1 个答案:

答案 0 :(得分:1)

这不是一个ActionScript问题,而是一个vkontakte问题。基于错误消息,您显然需要检查签名并确保它的构建与vkontakte期望的完全一样。

在这种情况下,我的猜测是你首先需要在进行MD5哈希之前按字母顺序对查询参数进行排序。

此外,似乎所有查询参数都是一个接一个地附加,而它们之间没有分隔符。我不知道vkontakte,但其他API通常希望参数由“&”分隔在哈希之前。