亚洲城娱乐bad token

( 亚洲城娱乐 )

按照文档上讲解的一步步生成token后,测试上传一直失败,提示是401 bad token ,错误是很明显了,可是我检查好久了,真不知问题出在哪里了?我贴出生成token的代码:

    public static  String getUploadTokenString fileName {
        String token = null;
        try{
            //一:将上传策略转换成Json格式
            JSONObject policy = new JSONObject;
            StringBuilder scope = new StringBuilder;
            scope.appendbucket;
            scope.append":";
            scope.appendfileName;
            policy.put"scope",scope.toString;   //只允许上传指定key的文件,而key就是文件名
            scope = null;
            policy.put"deadline",getTimer;
            //policy.put"insertOnly",1; //不允许修改
            //policy.put"callbackFetchKey",1;   //启动fetchKey上传模式
            // policy.put"returnBody ","{"name" : "$fname}";
            Log.d"policy",policy.toString;

            //二:对JSON编码的上传策略进行URL安全的Base64编码,得到待签名字符串:
            String encodPutPolicy = Base64.encodeToStringpolicy.toString.getBytes"UTF-8", Base64.URL_SAFE;
            Log.i"encodPutPolicy","encodPutPolicy is "  + encodPutPolicy;

            //三:使用SecertKey对上一步生成的待签名字符串计算HMAC-SHA1签名:并对签名进行URL安全的Base64编码:
            String encodSign = hmac_sha1SK,encodPutPolicy;
            Log.i"encodSign","encodSign is "  + encodSign;

            //五:将AccessKey、encodedSign和encodedPutPolicy用:连接起来:
            token = AK + : + encodSign + : + encodPutPolicy;
            Log.i"token","token is "  + token;

        }catch Exception e {
            e.printStackTrace;
        }
        return token;
    }

    private static long getTimer {
        return System.currentTimeMillis + 3600;    //上传凭证的有效期
    }

    //对字符串进行HMAC-SHA1签名
    private static String hmac_sha1String key,String message {
        String reString = null;
        try {
            byte[] data = key.getBytes"UTF-8";
            //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
            SecretKey secretKey = new SecretKeySpecdata, "HmacSHA1";
            //生成一个指定 Mac 算法 的 Mac 对象
            Mac mac = Mac.getInstance"HmacSHA1";
            //用给定密钥初始化 Mac 对象
            mac.initsecretKey;

            byte[] text = message.getBytes"UTF-8";
            //完成 Mac 操作
            byte[] text1 = mac.doFinaltext;
            reString = Base64.encodeToStringtext1, Base64.URL_SAFE;
        } catch Exception e
        {
            e.printStackTrace;
        }
        return reString;
    }

其中AK和SK分别是我七牛空间的AccessKey和SecretKey.
Base64用的是 com.loopj.android.http.Base64;包的。我是哪里还没有符合规范吗?

不应该在 android app 里面去生成 uptoken。原因是:不能把 SecretKey 放到客户端软件中,这会导致你的存储空间存在被他人访问的风险。正确做法是,应该由你的服务器生成 uptoken 然后返回给 android 客户端。

我也碰到这样的问题 请问在客户端怎么解决 我就一个人用 要什么服务端

我的之前还是好的,今天提示:客户端认证授权失败。请重试或提交反馈。401:bad token,群里问了问,有人今天也遇到同样的问题,想问问怎么解决啊?

(看完/读完)这篇文章有何感想! 亚洲城娱乐的分享…

发表评论

电子邮件地址不会被公开。 必填项已用*标注