关于 Android 的 Facebook SDK 的开发和发布密钥哈希的问题
Questions about Development and Release Key Hashes for Facebook SDK for Android
我阅读了 FB Developer 网站中的指南。
创建开发密钥哈希
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
并创建一个 Release Key Hashes
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
我有 6 个问题:
这些密钥哈希有什么作用?
为什么需要为 Release
和 Development
创建不同的密钥哈希?
如果我还没有将我的应用程序发布到 PlayStore。我可以使用 Release Key
而不是 Development key
吗?
如果我的应用程序在 PlayStore 上线,我可以继续使用 Development
键吗?
我应该在 YOUR_RELEASE_KEY_ALIAS
和 YOUR_RELEASE_KEY_PATH
中输入什么?谁能提供样品吗?
为什么当我们为 iOS 开发时,不需要那些密钥散列?
不相关的额外问题
这个单点登录按钮有什么作用?
Facebook 使用密钥哈希来验证您的应用程序与 Facebook 应用程序之间的交互。
如果您 运行 使用 Facebook 登录的应用程序,您需要将 Android 开发密钥哈希添加到您的 Facebook 开发者资料中。
对于您发布的应用程序版本,您还需要生成并设置发布密钥哈希。
在 OS X 或 Windows 上,您可以通过生成密钥或使用 Settings.getApplicationSignature(Context) 返回的值来获取密钥 has。
更多信息请参考下方link,
https://developers.facebook.com/docs/android/getting-started
这些密钥哈希有什么作用?
- Android 要求所有应用程序在安装前都使用证书进行数字签名。 Android 使用此证书来识别应用程序的作者,并且该证书不需要由证书颁发机构签名。所以这两个密钥都用于对您的应用程序进行数字签名。
为什么需要为发布和开发创建不同的密钥哈希?
- 您在开发期间使用
Development key
在调试模式下签署您的应用程序,并在您准备好在 Google Play 上分发您的应用程序时使用 release key
。
如果我还没有将我的应用程序发布到 PlayStore。我可以使用 Release Key 而不是 Development key 吗?
- 此时你必须使用
release key
如果我的应用程序在 PlayStore 中上线,我可以继续使用 Development 密钥吗?
- Google Play 不允许上传带调试密钥的 APK,因此您必须使用
release key
我应该在YOUR_RELEASE_KEY_ALIAS和YOUR_RELEASE_KEY_PATH中输入什么?谁能提供样品吗?
- YOUR_RELEASE_KEY_ALIAS : 使用你喜欢的任何名称(只是记住密钥库的名称)
- YOUR_RELEASE_KEY_PATH : 您要保存密钥库文件的路径(以备将来使用)
警告:将您的密钥库和私钥保存在安全可靠的地方,并确保您有它们的安全备份。如果您将应用程序发布到 Google Play,然后丢失了用于签署应用程序的密钥,您将无法发布应用程序的任何更新,因为您必须始终使用相同的密钥对应用程序的所有版本进行签名钥匙.
为什么当我们为 iOS 开发时,不需要那些密钥散列?
- ios 开发人员还需要这些密钥苹果开发团队生成证书用于开发和发布。我们必须在开发和发布时使用它
这首先是关于 android 应用程序和 Google play
对于 FACEBOOK
你必须生成不同的 key hash
用于开发和发布
how to generate keyhash for facebook
问:这些密钥哈希有什么作用?
- 它们唯一地标识您的密钥库和应用程序。这是独一无二的
您申请的指纹:
签署您的申请
- Android 要求所有应用程序都使用证书进行数字签名
在安装它们之前。 Android 使用此证书来
识别应用程序的作者,证书不需要
由证书颁发机构签名。 Android 应用经常使用
自签名证书。应用开发者持有证书的
私钥。
签名概述
- 您可以在调试或发布模式下签署应用程序。您登录您的应用程序
开发期间的调试模式和准备就绪时的发布模式
分发您的应用程序。 Android SDK 生成证书以
在调试模式下签署应用程序。要在发布模式下签署应用程序,您需要
生成自己的证书。为了您的进一步参考,您可以
看看 keyhashes 是什么
http://developer.android.com/tools/publishing/app-signing.html
https://developers.facebook.com/docs/facebook-login/android
问:为什么需要为发布和开发创建不同的密钥哈希?
如您所知,android 在开发和发布时使用不同的密钥库,因为这两个密钥库在各个方面都不同,它们都有不同的指纹和 SHA-1 哈希值,因此它们的处理方式完全不同。
问:如果我还没有将我的应用程序发布到 PlayStore。我可以使用 Release Key 而不是 Development key 吗?
是的,您只能将发布密钥用于 APK 生成目的,但是如果您处于调试模式,则此密钥根本不起作用。
问:如果我的应用程序在 PlayStore 中上线,我可以继续使用 Development 密钥吗?
是的,您可以继续使用开发密钥,但不能使用调试密钥。
问:YOUR_RELEASE_KEY_ALIAS和YOUR_RELEASE_KEY_PATH应该填什么?谁能提供样品吗?
如果您担心 facebook 密钥,请附上图片
问:为什么当我们为iOS开发时,不需要那些密钥散列?
这是由于平台要求。如果一个平台需要一件事,那么另一个平台也没有必要。
单点登录
单点登录大致是 Facebook Connect 等服务的扩展(和替代),将您连接到第三方社交应用程序和服务。如果您已经在手机上登录 Facebook phone,您将能够使用您的 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();
}
}
这就是你的答案。
开发密钥哈希 - 这仅用于测试,直到您还没有发布游戏商店。
发布密钥哈希 - 这是没有此密钥哈希的原始哈希密钥 Facebook 在 Play 商店中无法使用。
如果您创建 发布密钥哈希,则无需创建 2 个哈希密钥,然后不需要创建 开发密钥哈希。
- 是的,没有发布密钥哈希 facebook 在 Play 商店中无法使用。
- 否 开发密钥哈希仅用于测试哈希密钥。
- 是的,他们可以做到。
我阅读了 FB Developer 网站中的指南。
创建开发密钥哈希
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
并创建一个 Release Key Hashes
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
我有 6 个问题:
这些密钥哈希有什么作用?
为什么需要为
Release
和Development
创建不同的密钥哈希?如果我还没有将我的应用程序发布到 PlayStore。我可以使用
Release Key
而不是Development key
吗?如果我的应用程序在 PlayStore 上线,我可以继续使用
Development
键吗?我应该在
YOUR_RELEASE_KEY_ALIAS
和YOUR_RELEASE_KEY_PATH
中输入什么?谁能提供样品吗?为什么当我们为 iOS 开发时,不需要那些密钥散列?
不相关的额外问题
这个单点登录按钮有什么作用?
Facebook 使用密钥哈希来验证您的应用程序与 Facebook 应用程序之间的交互。
如果您 运行 使用 Facebook 登录的应用程序,您需要将 Android 开发密钥哈希添加到您的 Facebook 开发者资料中。 对于您发布的应用程序版本,您还需要生成并设置发布密钥哈希。
在 OS X 或 Windows 上,您可以通过生成密钥或使用 Settings.getApplicationSignature(Context) 返回的值来获取密钥 has。
更多信息请参考下方link,
https://developers.facebook.com/docs/android/getting-started
这些密钥哈希有什么作用?
- Android 要求所有应用程序在安装前都使用证书进行数字签名。 Android 使用此证书来识别应用程序的作者,并且该证书不需要由证书颁发机构签名。所以这两个密钥都用于对您的应用程序进行数字签名。
为什么需要为发布和开发创建不同的密钥哈希?
- 您在开发期间使用
Development key
在调试模式下签署您的应用程序,并在您准备好在 Google Play 上分发您的应用程序时使用release key
。
如果我还没有将我的应用程序发布到 PlayStore。我可以使用 Release Key 而不是 Development key 吗?
- 此时你必须使用
release key
如果我的应用程序在 PlayStore 中上线,我可以继续使用 Development 密钥吗?
- Google Play 不允许上传带调试密钥的 APK,因此您必须使用
release key
我应该在YOUR_RELEASE_KEY_ALIAS和YOUR_RELEASE_KEY_PATH中输入什么?谁能提供样品吗?
- YOUR_RELEASE_KEY_ALIAS : 使用你喜欢的任何名称(只是记住密钥库的名称)
- YOUR_RELEASE_KEY_PATH : 您要保存密钥库文件的路径(以备将来使用)
警告:将您的密钥库和私钥保存在安全可靠的地方,并确保您有它们的安全备份。如果您将应用程序发布到 Google Play,然后丢失了用于签署应用程序的密钥,您将无法发布应用程序的任何更新,因为您必须始终使用相同的密钥对应用程序的所有版本进行签名钥匙.
为什么当我们为 iOS 开发时,不需要那些密钥散列?
- ios 开发人员还需要这些密钥苹果开发团队生成证书用于开发和发布。我们必须在开发和发布时使用它
这首先是关于 android 应用程序和 Google play
对于 FACEBOOK
你必须生成不同的 key hash
用于开发和发布
how to generate keyhash for facebook
问:这些密钥哈希有什么作用?
- 它们唯一地标识您的密钥库和应用程序。这是独一无二的 您申请的指纹:
签署您的申请
- Android 要求所有应用程序都使用证书进行数字签名 在安装它们之前。 Android 使用此证书来 识别应用程序的作者,证书不需要 由证书颁发机构签名。 Android 应用经常使用 自签名证书。应用开发者持有证书的 私钥。
签名概述
- 您可以在调试或发布模式下签署应用程序。您登录您的应用程序 开发期间的调试模式和准备就绪时的发布模式 分发您的应用程序。 Android SDK 生成证书以 在调试模式下签署应用程序。要在发布模式下签署应用程序,您需要 生成自己的证书。为了您的进一步参考,您可以 看看 keyhashes 是什么
http://developer.android.com/tools/publishing/app-signing.html
https://developers.facebook.com/docs/facebook-login/android
问:为什么需要为发布和开发创建不同的密钥哈希?
如您所知,android 在开发和发布时使用不同的密钥库,因为这两个密钥库在各个方面都不同,它们都有不同的指纹和 SHA-1 哈希值,因此它们的处理方式完全不同。
问:如果我还没有将我的应用程序发布到 PlayStore。我可以使用 Release Key 而不是 Development key 吗?
是的,您只能将发布密钥用于 APK 生成目的,但是如果您处于调试模式,则此密钥根本不起作用。
问:如果我的应用程序在 PlayStore 中上线,我可以继续使用 Development 密钥吗?
是的,您可以继续使用开发密钥,但不能使用调试密钥。
问:YOUR_RELEASE_KEY_ALIAS和YOUR_RELEASE_KEY_PATH应该填什么?谁能提供样品吗?
如果您担心 facebook 密钥,请附上图片
问:为什么当我们为iOS开发时,不需要那些密钥散列?
这是由于平台要求。如果一个平台需要一件事,那么另一个平台也没有必要。
单点登录
单点登录大致是 Facebook Connect 等服务的扩展(和替代),将您连接到第三方社交应用程序和服务。如果您已经在手机上登录 Facebook phone,您将能够使用您的 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();
}
}
这就是你的答案。
开发密钥哈希 - 这仅用于测试,直到您还没有发布游戏商店。 发布密钥哈希 - 这是没有此密钥哈希的原始哈希密钥 Facebook 在 Play 商店中无法使用。
如果您创建 发布密钥哈希,则无需创建 2 个哈希密钥,然后不需要创建 开发密钥哈希。
- 是的,没有发布密钥哈希 facebook 在 Play 商店中无法使用。
- 否 开发密钥哈希仅用于测试哈希密钥。
- 是的,他们可以做到。