2013-10-30 95 views
0

我想訪問登錄用戶的Facebook信息。爲此,我通讀了各種文檔,並發現在創建應用程序並生成Facebook App-Id的Facebook開發人員部分上需要使用哈希鍵配置。我試圖在Facebook開發者門戶上生成散列鍵以填充到Native Android App部分。我經歷了很多這樣的鏈接HereFacebook的哈希鍵問題

但是哈希鍵根本不工作。有時它表示沒有散列匹配,或者有時它只是提示一個Facebook對話框並消失。

但它仍然不工作在我的設備。它在Emulator上運行良好。我使用的是Mac系統,這是否有問題?

任何人都可以引導我,如果我失去了一些東西?我是否需要在Facebook開發人員門戶的應用程序設置中編輯更多內容?

回答

0

這是因爲設備正在創建不在您的應用設置中的新鍵哈希。所以你必須相應地更新keyhash。使用onCreate()

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

     } 
+0

我也試過這個從這個鏈接http://stackoverflow.com/questions/5989237/generating-hash-key-for-app-using-facebook-sdk但沒有運氣。 –

+0

是否在Facebook應用程序設置和代碼中正確輸入了包名? –

+0

是的,它和它在Manifest文件中聲明的一樣,因爲package =「XXX.XXX.XXX」就是這樣嗎?我錯過了什麼。它應該與Facebook開發者門戶上的Native IOS APP中提到的捆綁ID相似嗎? –

0

這對於很多人來說都是一個問題。或者,從命令行生成散列,您可以從代碼生成散列,然後將其打印到日誌中,以便從中複製。

以下代碼可以做到這一點。例如,你可以將它放在你的活動onCreate()中,並且一旦你有散列,就將它移除。顯然你需要將包名改爲你自己的。

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) { 
} 

This回答很好地介紹瞭如何從命令行做同樣的,如果你不想使用的代碼。兩者應該有相同的結果。

0

試試這個當會話打開

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

     } 
+0

我也試過這個從這個鏈接http:// stackoverflow .com/questions/5989237/generate-hash-key-for-app-using-facebook-sdk但是沒有運氣。 –

+0

@SureshSharma在MainActivity中添加此代碼onCreate()方法 – morroko

+0

是的,我已經做到了......我在我的應用程序中有主要活動。我通過在onCreateMethod中使用此方法創建了散列鍵。只需將它從DDMS logcat複製並粘貼到Facebook開發人員門戶的本機Android應用程序部分中的散列鍵字段即可。但仍然無法正常工作。請讓我知道如果我失去了一些東西。 –