Google应用、Facebook登陆时遇到的问题

问题起因是这样,google有一个签名计划,叫Google Play App Signing,这个是在开发者上传包的时候就需要选择的,应该是强制升级,没注意,问题就是因为这个签名的协议,启用了之后,google会在你上传包的时候给你把包里的签名改掉。
Google应用、Facebook登陆时遇到的问题_第1张图片
因为是第一次接google的应用,所以没有在意,开发测试没问题就直接发布了,轻易发布应用是大忌,因为没有在正式环境下测试,这个值得铭记和检讨。
Facebook接入登陆时候会有一个密钥散列,这个散列是根据包的正式签名生成的,开发环境下,用的是自己的签名,搞好散列后填入fb后台,测试没问题,发布后,google改了签名,导致正式环境下的散列和后台的对不上,登陆失败。"… The key hash … does not match any store key hashes …"
这里写图片描述
通常密钥散列的获取方法是本地存有签名文件.keystore的情况下通过命令行获取的,可是google改了签名怎么办呢,首先我从网上copy了一段代码,如果侵权,请联系我删除,我不知道原作者是谁,所以就不引用其他博客了。

	private void printKeyHash(){
        // Add code to print out the key hash
        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.zhanyouall.qianjunji.google", 
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                }
        } catch (NameNotFoundException e) {
            Log.d("KeyHash:", e.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.d("KeyHash:", e.toString());
        }
    }

通过这个打印,用logcat查看,将打印出来的散列加到fb后台,登陆成功。
google登陆也会失败,因为,google创建服务时候,会在后台添加OAuth客户端Android,里面有一行参数,需要添加签名的sha-1值。
Google应用、Facebook登陆时遇到的问题_第2张图片
google的签名sha-1值在这个位置,
Google应用、Facebook登陆时遇到的问题_第3张图片
以上,是google应用发布时遇到的一个问题。
反思其实就是自己太过于轻视测试的流程了,不完整的流程导致发布后的应用遇到了问题,工作中不是所有人都会给你机会容许犯错。

你可能感兴趣的:(前端)