2013-12-16 2 views
0

Код:Facebook метод isSessionValid() всегда возвращает ложь в Android

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(), она всегда возвращает ложь, и это не входит в 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() возвращает true только после генерации другого KeyHash для текущего запущенного Android-устройства (не уверен, что это действительно вызвало проблему). Но может дать ему попробовать то, что стоит. Надеюсь, это полезно.

Смежные вопросы