有关适用于Android的Facebook SDK的开发和发布密钥哈希的问题

我在FB Developer网站上阅读了这些指南.

创建开发密钥哈希

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

并创建一个释放键哈希

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

我有6个问题:

>那些Key Hashes有什么作用?
>为什么需要为Release和Development创建不同的键哈希?
>如果我尚未将我的应用程序发布到PlayStore.我可以使用Release Key而不是使用Development键吗?
>如果我的应用程序在PlayStore中存在,我可以继续使用开发键吗?
>我应该把什么放入YOUR_RELEASE_KEY_ALIAS和YOUR_RELEASE_KEY_PATH?有人可以提供样品吗?
>为什么我们为iOS开发时,不需要那些关键的哈希?

额外的问题是无关的

这个Single Sign On按钮有什么作用?

解决方法

问:那些Key Hashes做了什么?

>他们唯一地标识您的密钥库和应用程序.这是一个独特的
适合您应用的指纹:

签署您的应用程序

> Android要求所有应用程序都使用证书进行数字签名
在他们可以安装之前. Android使用此证书
识别应用程序的作者,证书不需要
由证书颁发机构签署. Android应用经常使用
自签名证书.应用开发者持有证书
私钥.

签名概述

>您可以在调试或发布模式下签署应用程序.你签了你的应用程序
准备好时,在开发期间和发布模式下调试模式
分发您的应用程序. Android SDK生成证书
在调试模式下签署应用程序要在发布模式下签署应用,您需要
生成自己的证书.您可以进一步参考
看看关键词是什么

http://developer.android.com/tools/publishing/app-signing.html

https://developers.facebook.com/docs/facebook-login/android

问:为什么需要为Release和Development创建不同的哈希值?

如你所知,android使用不同的Keystore进行开发和发布,因为两个密钥库在每个方面都不同,它们都有不同的指纹和SHA-1哈希,因此它们被完全区别对待.

问:如果我尚未将我的应用程序发布到PlayStore.我可以使用Release Key而不是使用Development键吗?

是的,您只能使用发布密钥进行APK生成,但如果您处于调试模式,则此密钥根本不起作用.

问:如果我的应用程序在PlayStore中存在,我可以继续使用开发密钥吗?

是的,您可以继续使用开发密钥,但不能使用调试密钥.

问:我应该在YOUR_RELEASE_KEY_ALIAS和YOUR_RELEASE_KEY_PATH中加入什么?有人可以提供样品吗?

如果你担心Facebook密钥,附加是图像

问:为什么我们为iOS开发时,不需要那些关键的哈希?

这是由于平台要求.没有必要,如果一个平台需要一个东西,另一个平台也是如此.

单点登录

单点登录大致是Facebook Connect等服务的扩展(和替代),将您连接到第三方社交应用和服务.如果您已使用手机登录Facebook,则可以使用Facebook凭据登录其他应用.

这是生成fb指纹的代码.

public void generateFbFingerPrint() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.group3amd.gc.activity",PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String sign = Base64
                    .encodetoString(md.digest(),Base64.DEFAULT);
            Log.e("KEYHASH:",sign);
            Toast.makeText(getApplicationContext(),sign,Toast.LENGTH_LONG)
                    .show();
        }
    } catch (NameNotFoundException e) {
        e.printstacktrace();
    } catch (NoSuchAlgorithmException e) {
        e.printstacktrace();
    }




}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...