当前位置: 首页 > 知识库问答 >
问题:

Facebook登录Android应用程序与发布密钥

越胤
2023-03-14

我试图在谷歌播放上发布我的应用程序。我的应用程序中有脸书登录。直到昨天,一切都很好,直到我用debug.keystore运行应用程序。但是当我使用自己的发布密钥并签署我的应用程序时,脸书没有登录,我似乎不知道为什么。

遵循这个链接,并做了所有的冰毒:所以:Androidfacebook应用html" target="_blank">程序的密钥哈希

我换了机器,换了平台(windows和mac osx ML),也得到了一个解决方案,但同样的问题。它不会登录。下面的代码在我使用debug时为我提供了正确的哈希键。密钥库,当我使用不同的密钥对应用程序进行签名时,我会得到相同的Hashkey(经过多次尝试,我得出结论,我得到的密钥是错误的)

PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}

那么,在使用发布密钥对应用程序进行签名时,我们需要采取哪些额外的步骤呢。请帮忙。

共有3个答案

魏明亮
2023-03-14

对于Linux

开放终端:

用于调试生成

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

你会发现debug.keystore从". android"文件夹复制它,粘贴在桌面上,并运行上述命令

发布版本

keytool -exportcert -alias <aliasNameUseInReleseKeystore> -keystore <RelesekeystoreFilePath> | openssl sha1 -binary | openssl base64

注意:确保在这两种情况下它都必须询问密码。如果它不要求输入密码,这意味着命令出错。

盖绪
2023-03-14

我找到了一个管理调试和发布环境的绝佳解决方案。

1.生成两个哈希,用于使用此命令进行调试:

keytool -exportcert -alias androiddebugkey -keystore c:\Users\YourUser\.android\debug.keystore | openssl sha1 -binary | openssl base64

这个是为了发布:

keytool -exportcert -alias "yourAliasUsedWhenYouGeneratedTheKey" -keystore "C:\Users\YourUser\AppData\Local\Android\android-studio\key.jks" | openssl sha1 -binary | openssl base64

2.转到Facebook应用程序并创建两个应用程序,一个“您的应用程序”和另一个“您的应用程序(调试)”。然后将调试哈希分配给调试应用程序,将发布哈希分配给正常应用程序(显而易见)。

3.获取应用程序ID并将其写入strings.xml文件中:

<string name="app_id">123456789</string>
<string name="app_id_debug">987654321</string>

4.最后,在你的代码中,以编程方式在你的Facebook登录片段中注册appId,方法如下:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    uiHelper = new UiLifecycleHelper(getActivity(), callback);
    uiHelper.onCreate(savedInstanceState);

    String appId;

    try {
        ApplicationInfo appinfo = getActivity().getPackageManager().getApplicationInfo(getActivity().getPackageName(), 0);
        boolean isDebugMode = (0 != (appinfo.flags &= ApplicationInfo.FLAG_DEBUGGABLE));

        if (isDebugMode)
            appId = getString(R.string.app_id_debug);
        else
            appId = getString(R.string.app_id);
    } catch (PackageManager.NameNotFoundException e) {
        appId = getString(R.string.app_id);
    }

    Session session = new Session.Builder(getActivity().getBaseContext()).setApplicationId(appId).build();
    Session.setActiveSession(session);

    return inflater.inflate(R.layout.fragment_facebook_login, container, false);
}

这样,您就可以在每个环境中使用正确的appId和正确的应用程序,而无需更改任何内容!!

孙恩
2023-03-14

以下是我解决问题的方法:

  1. 使用openssl-0.9.8e_WIN32而不是openssl-0.9.8k_WIN32
  2. 我在下面的代码中没有使用别名,或者我在别名中输入了一个空格,因为生成的密钥是错误的

我用了这个:

keytool -exportcert -alias <aliasNameUseInReleaseKeystore> -keystore <ReleasekeystoreFilePath> | openssl sha1 -binary | openssl base64

另外,我在问题中提出的方法真的没用。它只不过让我困惑不已。

 类似资料:
  • 我是新的Android。我试图将FB登录与我的Android应用程序集成。我已经按照developers.facebook.com的所有说明进行了集成。然而,当我试图运行我的应用程序时,它会在发布时崩溃。 请注意,我的AndroidManifest.xml中已经有Facebook应用程序ID、元数据标签和android活动标签。 布局如下: 以下是my LoginActivity的代码片段: 以下

  • 我已经设置了简单的facebook登录。对于Android 2.3.6,一切正常,用户得到提示登录对话框,输入数据,应用程序继续运行。我以为这是Android版本的错误,但事实证明,当手机上安装了facebook应用程序时,登录不起作用! 在Galaxy Ace 2.3.6 HTC Desire 4.1.2 Galaxy Note 4.1.2 Android emulator 4.1.2上进行了测

  • 当我构建我的应用程序并尝试它时,没有任何错误,但当我在google play store上发布我的应用程序并尝试登录Facebook时,它会给我一个错误。这个错误是一个错误的散列键,因为散列键发生了变化(我得到了sign应用程序的散列键,通过许多方式给了我相同的has键,工作正常)这是第一个问题。 我的第二个问题是当尝试使用gmail登录(谷歌登录)获取字段错误。 (您有错误的OAuth2相关配置

  • 在尝试使用Facebook登录时,我一直看到这样的错误。 我检查了一切,包括设置pList 并遵循此链接中的解决方案此应用程序的开发人员没有正确设置此应用程序的Facebook登录? 通过将“是否要使此应用及其所有live功能可供公众使用?”设置为“是” 但是后来这个图像出现了。 当我第一次尝试使用facebook登录时,甚至不需要将实时功能转向YES来使其工作,我想知道哪里出错了。

  • 我在笔记本电脑上为我的应用程序创建了一个密钥,然后发布了我的应用程序。现在我刚刚将该密钥复制到flash中,现在我想再次使用它,但我遇到了以下错误: 我只是用一把新钥匙再次测试了这条路径,它又发生了! 问题是什么? 谢谢你的回答。

  • 我有问题与Facebook帐户登录在我的应用程序。我读到Facebook Doc。我做了脸书医生的所有步骤。 首次在应用程序中使用facebook帐户登录-成功!然后在应用程序中注销。我想用我的facebook帐户再次登录。但是不工作!!我拿了这个例外!请帮帮我! 例外:此应用程序没有配置Android Key哈希。在超文本传输协议中配置应用密钥哈希:developers.facebook.com