Facebook方法isSessionValid()总是在Android中返回false

时间:2013-12-16 07:48:23

标签: android facebook

代码:

public void onClick(View v) {
                if(fb.isSessionValid())
                {
                    Log.i("Checking isSessionValid()","Inside isSessionValid()");
                    try {
                        fb.logout(getApplicationContext());
                        updatebuttonimage();
                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                else
                {
                    Log.i("","Jumped isSessionValid");
                    fb.authorize(MainActivity.this,new String[]{"email"},new DialogListener() {


                        public void onFacebookError(FacebookError e) {
                            Toast.makeText(MainActivity.this,"FacebookError",Toast.LENGTH_SHORT).show();

                        }
.....

当我试图检查isSessionValid()时,它总是返回false并且它不会进入方法。我也尝试在onCreate()中添加以下代码但是它在我的logcat中打印了相同的KeyHash所以没有使用:

 try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.example.facebook_integration", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

帮助将非常感谢伙计们。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我发现密钥哈希是问题,重新生成它再次解决了我的问题。

注意: KeyHash对于每个模拟器或设备是独立的,我相信因为我最初为我的模拟器生成了KeyHash,后来开始在实时设备上工作,所以我不得不再次生成哈希密钥以使其工作。 isSessionValid()仅在为当前运行的android设备生成另一个KeyHash后返回true(不确定这是否真的导致了问题)。但是可以尝试一下它的价值。希望这很有用。