2013-07-31 60 views
0

我使用FacebookSDK以及所有下面的步驟生成一個新的keyhash,keyhash使用調試密鑰庫生成的工作就像一個魅力,但用我們自己的情侶密鑰庫不工作的keyhash產生的,那麼我想在troubleshooting給出的功能,但它仍然是不工作。我在的onCreate安卓:概念背後的Facebook SDK的KeyHash?

// Add code to print out the key hash 
     try { 
      System.out.println("Inside try for keyhash"); 
      PackageInfo info = getPackageManager().getPackageInfo(
        "com.myapp.facebookint", 
        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)); 
       System.out.println("KeyHash:"+Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
       } 
     } catch (NameNotFoundException e) { 
      System.out.println("keyhash name not found"); 
     } catch (NoSuchAlgorithmException e) { 
      System.out.println("keyhash algo not found"); 
     } 

使用下面的代碼試圖它給了我一個keyhash,這是我在Facebook的應用程序設置插入任何決議!現在我想知道使用keyhash的概念,Facebook如何識別它?以及如果我使用debug keyhash上傳應用程序會發生什麼?

我的印象是,Facebook將keyhash與app本身的簽名進行匹配,如果兩者都使用相同的密鑰存儲庫進行簽名,那麼它允許應用程序進行身份驗證,但似乎並非如此。由於我出口的應用程式,例如我會爲發佈做準備,下載的APK到手機通過文件瀏覽器,並試圖從那裏安裝和運行,這是相同的,因爲它會在調試模式下進行。

任何一個可以請一些線索這光。

回答

0

是的,的確是這樣的。 Facebook知道您的應用程序簽名並驗證它是否知道該應用程序嘗試進​​行身份驗證是否正確。我猜東西在我的System.out.println錯了,我用從https://stackoverflow.com/a/9600642/243354

下面的代碼可以插入這個代碼,導出APK,你將簽署它發佈,然後加載APK仿真器和檢查散列鍵標記的logcat,一旦找到,更新到Facebook設置。