使用Facebook凭据记录我的应用程序

时间:2014-02-06 06:46:07

标签: android facebook facebook-graph-api

我想在我的应用程序中添加带有Facebook按钮的登录。所以我试着按照这个指南。

Getting Started with the Facebook SDK for Android

我试图获取Android密钥哈希。但我无法在我的PC cmd上运行它。

这是我试过的代码。

我将我的主路径添加到此%HOMEPATH%

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

但它显示出这样的错误。

enter image description here

任何人都可以帮我修复此错误。

2 个答案:

答案 0 :(得分:2)

首先从此a link

下载openssl

第二次将其解压缩到本地磁盘C:将其命名为openssl,即文件夹名称

第三个在环境变量中设置它。程序如下

右键单击我的电脑 - >属性 - >高级 - >环境变量 在系统变量下 - >单击路径并单击编辑

现在插入';'分号并粘贴文件夹openssl的路径。好的。

现在你可以看到openssl在cmd中被识别为命令。

让KeyHash执行以下cmd

keytool -exportcert -alias androiddebugkey -keystore "path of ur debug.keystore" | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

警告的解决方案---

WARNING: can't open config file: C:/OpenSSL/openssl.cnf
WARNING: can't open config file: C:/OpenSSL/openssl.cnf
openssl:Error: 'base' is an invalid command.

首先在环境变量中添加以下行,类似于第三步。

设置OPENSSL_CONF=c:\openssl\bin\openssl.cfg

现在在cmd以上运行

keytool -exportcert -alias androiddebugkey -keystore "path of ur debug.keystore" | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

你收到警告,但是在cmd ...

中返回了keyHash

答案 1 :(得分:0)

使用以下代码在日志中打印哈希键

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        PrintHashKeyInLog();

    }

    public void PrintHashKeyInLog() {

        PackageInfo info;
        try {
            info = getPackageManager().getPackageInfo(
                    "Your package 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.encode(md.digest(), 0));
                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());
        }
    }