Android单点登录

Android单点登录,android,facebook,login,single-sign-on,Android,Facebook,Login,Single Sign On,我在使用更新版本的Facebook时遇到登录失败的无效密钥错误。如果我删除它-它工作得很好 创建哈希键的正确方法是什么 我知道Android中的单点登录有很多问题和答案,但没有一个能帮助我在Android中实现单点登录 我的代码: public class Main extends Activity { Facebook facebook = new Facebook("XXXXXXXXXX"); @Override public void onCreate(Bundl

我在使用更新版本的Facebook时遇到登录失败的无效密钥错误。如果我删除它-它工作得很好

创建哈希键的正确方法是什么

我知道Android中的单点登录有很多问题和答案,但没有一个能帮助我在Android中实现单点登录

我的代码:

public class Main extends Activity {
    Facebook facebook = new Facebook("XXXXXXXXXX");

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        facebook.authorize(this, new DialogListener() {
            @Override
            public void onComplete(Bundle values) {}

            @Override
            public void onFacebookError(FacebookError error) {}

            @Override
            public void onError(DialogError e) {}

            @Override
            public void onCancel() {}
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);
    }
}
然后我使用命令生成了一个散列键

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
另外,我拥有并给出了OpenSSL的位置,直到
OpenSSL.exe


在我按下Enter键后,它要求输入密码,我给了安卓作为密码。然后我得到一个密钥并填写“我的应用程序”。

创建散列密钥的正确方法

请按照以下步骤操作

以下是步骤:

  • 从下载OpenSSL

  • 把它取出来。在
    C://
    中创建一个文件夹-OpenSSL,并将提取的代码复制到此处

  • 检测
    debug.keystore
    文件路径。如果找不到,请在
    C://
    中进行搜索,并在下一步中使用命令中的路径

  • 检测您的
    keytool.exe
    路径,在命令提示符中转到该目录/并运行此命令(在一行中):

    $keytool-exportcert-alias androiddebugkey-keystore“C:\Documents and Settings\Administrator.android\debug.keystore”|“C:\OpenSSL\bin\OpenSSL”sha1-binary |“C:\OpenSSL\bin\OpenSSL”base64

  • 它将要求输入密码。放上“安卓”,就这样。您将得到一个密钥散列


  • 嗯,这可能不是答案,我想你检查过了


    您是否使用Windows XP生成哈希?可能存在问题。

    首先,您需要根据路径使用以下代码创建哈希键

    C:\Documents and Settings\Logistic103>keytool -export -alias androiddebugkey -keystore "C:\Documents and Settings\Logistic103\.android\debug.keystore" | E:\Downloads\openssl-0.9.8k_WIN32\bin\openssl.exe sha1 -binary | E:\Downloads\openssl-0.9.8k_WIN32\bin\openssl.exe enc -a -e
    
    然后输入密码:

    Enter keystore password:  android
    
    然后转到Facebook开发者并登录到Facebook。登录后转到应用程序并单击编辑设置链接:

    然后将生成的密钥添加到应用程序中

    你就是这样做的;)


    以上步骤对我来说效果很好。

    最好使用这段代码

      try {
            PackageInfo info = getPackageManager().getPackageInfo("your.package",
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("YOURHASH KEY:",
                        Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (NameNotFoundException e) {
    
        } catch (NoSuchAlgorithmException e) {
    
        }
    
    请点击此链接


    您可以有问题地为已签名和未签名的应用程序生成哈希键。从你的Logcat上复制这把钥匙

    嗯,这可能根本不是一个无效密钥的错误,我有一个类似的错误,无效的访问令牌…说用户可能已经更改了他的密码。。。但事实上,这是一个不同的过程issue@Venky您好,我在4-5个月前也遇到过同样的问题,我最终按照上述步骤解决了这个问题,但我记得我在facebook api中做了一些更改,但我现在不记得了,我会尽快恢复