我在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
那些Key Hashes做了什么?
为什么有必要建立两个不同的密钥哈希Release
和Development
?
如果我尚未将我的应用程序发布到PlayStore.我可以使用Release Key
而不是使用Development key
?
如果我的应用程序在PlayStore中存在,我可以继续使用Development
密钥吗?
我应该投入YOUR_RELEASE_KEY_ALIAS
和YOUR_RELEASE_KEY_PATH
?有人可以提供样品吗?
为什么当我们为iOS开发时,不需要那些关键的哈希?
这个单点登录按钮有什么作用?
问:那些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使用不同的密钥库进行开发和发布,因为两个密钥库在每个方面都不同,它们都有不同的指纹和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(); } }