2013-08-06 39 views
2

我想在我的android應用程序中實現一個facebok共享按鈕。我遵循官方的facebook-android文檔,但在出現對話框後(「...想訪問您的公共個人資料和朋友列表。取消/否」),沒有任何事情發生。我回到我的按鈕所在的位置。Facebook登錄對話框彈出什麼都沒有發生在Android

我這是怎麼打開的對話框:

@Override 
public void onClick(View v) 
{ 
    case R.id.btnFacebook: 
     Session.openActiveSession(this, true, new Session.StatusCallback() { 

     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
     if (session.isOpened()){ 
      Request.executeMeRequestAsync(session, new Request.GraphUserCallback(){ 

       @Override 
       public void onCompleted(GraphUser user, Response response) { 
        if (user != null){ 
        Log.e("D", "Success " + user.getName()); 
        } 
        else Log.e("D", "NOPE !"); 
       } 
      }); 
     } 
     } 
    }); 
    break; 
} 

這個方法應該叫後的登錄是成功:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
} 

AndroidManifest.xml中

<uses-permission android:name="android.permission.INTERNET"/> 

<meta-data android:value="@string/app_id" android:name="com.facebook.sdk.ApplicationId"/> 
<activity android:name="com.facebook.LoginActivity"></activity> 

另外我還添加了facebook SDK -build項目,我在developers.facebook.com上創建了一個應用程序 - 添加了sha1鍵。

我不知道發生了什麼事。沒有錯誤信息,沒有例外。

回答

3

問題在於debug.keytool生成的SHA1哈希鍵。不幸的是,我不知道爲什麼debug.keytool生成了不同的密鑰哈希。

要獲得SHA1密鑰,您需要提供developers.facebook.com(設置),並在那裏你創建一個新的應用領域,可以用下面的代碼獲得它:

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

    try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "com.facebook.samples.loginhowto", 
       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) { 

    } 
    ... 

將「com.facebook.samples.loginhowto」替換爲您的包名稱(而不是您的類)。你會得到你的鑰匙。

相關問題