2013-12-16 26 views
0

代碼:Facebook的方法isSessionValid()總是在Android中返回false

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,並沒有進入method.I有也嘗試添加在的onCreate()下面的代碼,但它打印相同KeyHash在我的logcat所以沒有用:

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

我發現密鑰哈希是問題,重新生成它再解決我的問題。

注: KeyHash是單獨爲每個模擬器或設備,我相信因爲我已經初步產生了我的模擬器的KeyHash,後來開始了實時的設備上工作,所以我不得不生成散列鍵再次讓它起作用。 isSessionValid()僅在爲當前運行的Android設備生成另一個KeyHash後才返回true(不確定是否真的會導致此問題)。但是可以嘗試一下它的價值。希望這是有用的。

相關問題