Android使用Facebook SDK(申請篇)

Facebook在每個人的生活中占的比例已經越來越高,有很多不論是網站或是APP為了達到分享及快速散步的目的而紛紛加入「分享到Facebook」的功能(好玩的東西當然要跟FB上面的好朋友分享囉!),這篇文章記錄怎麼申請Facebook API Key。

首先到http://developers.facebook.com/建立一個新的應用程式,第一次使用可能會需要手機號碼或一些其他認證,註冊部分請參考在 WordPress 使用 Facebook 留言板 (Facebook Social Plugins Comments)@蛙齋
註冊完成也建立了新的應用程式之後進入主畫面,點選右上角的「編輯設定」,最下方有個「Native Android App」旁邊要使用者輸入「Android Key Hash」,接下來小蛙記錄一下怎麼產生這個Android Key Hash。這邊小蛙建議一次就先把兩組Key Hash產生好,平常開發時的debugkey以及正式發布時用的.keystore。

  1. 產生Facebook Key Hash需要使用到OpenSSL這個工具,可以先到OpenSSL for Windows下載Binaries Zip這個版本。
  2. 解壓縮後把 openssl-0.9.8h-1-bin\bin\openssl.exe 複製到C:\Documents and Settings\Hans\.android\debug.keystore(也可以複製到其他地方,只是openssl小蛙只會在這使用到,所以直接放這邊)。
  3. 點選開始 -> 執行 -> 輸入「cmd」-> 輸入「cd C:\Documents and Settings\Hans\.android\」(找到debugkey的位置),如果這邊不知道在哪的話,可以到Eclipse -> Preferences -> Android -> Build -> Default debug keystore 中找到。
  4. 輸入以下指令
    keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
    輸入金鑰儲存庫密碼: android

    相關資訊如下:
    Keystore name: “debug.keystore”
    Keystore password: “android”
    Key alias: “androiddebugkey”
    Key password: “android”
    CN: “CN=Android Debug,O=Android,C=US”

  5. 產生一段類似「egv25u/dcaukos35ac44e43ada4=」的Key,複製起來貼在上面提到的「Android Key Hash」中,點選最下方儲存。

這樣就完成debug key的設定了,自己用來簽署的keystore設定方式也是相同,只要把-alias androiddebugkey以及-keystore debug.keystore更換成自己的設定即可。

    12 個回應

    1. 路人甲表示:

      請問一下
      我在模擬器可以執行FB的PO文,可是一但壓成APK檔後安裝置手機時,就會有問題,一直在權限驗證(驗證→按下OK→驗證→按下OK)一直重復。
      怎麼會這樣

      • Hans表示:

        Dear 路人甲:
        小蛙猜測應該是因為您使用 debugkeystore 的緣故,
        包成 apk 的時候,會需要一個可以發佈的 keystore,
        一樣要在 facebook 登錄這個 keystore 產生的 hash key,
        這樣 apk 才能正常使用喔!

        • mike表示:

          不好意思我也有遇到這樣的困能。請問什麼意思?能講詳細一點嗎? 謝謝!

          • Hans表示:

            Dear mike:
            以 android 來說 facebook app 後台都會對應一個可以使用的 key hash,
            而這個 key hash 是透過上面的文章產生的,
            透過 eclipse 開發 android 時,系統會產生一個 debug.keystore,
            但是匯出成 apk 要上架時必須自己做一個 keystore 出來,
            不可以再用 debug.keystore (這只是方便測試用),
            上面提到 facebook app 對應到一個 key hash,
            每個 keystore 又會產生出不一樣的 key hash,
            所以把這些 key hash 都加到 facebook 後台試試看囉!

    2. slow表示:

      請問在打完
      keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
      輸入金鑰儲存庫密碼: android
      出現逼逼聲 然後跑出奇怪符號的亂碼 該怎解決?

      • Hans表示:

        Dear slow:
        不好意思,小蛙也不知道為什麼會有這種情況耶!(沒有遇到過><)
        您輸入的應該是沒錯,小蛙複製您輸入的貼在自己的cmd底下是可以work的 …

    3. tj474474表示:

      可否請教你為何在下載了openssl的檔案之後
      輸入指令仍會不斷顯示
      ‘openssl’ 不是內部或外部命令 也不是可以執行的程式或批次檔
      謝謝您 感激不盡

      • Hans表示:

        Dear tj474474:
        這是openssl路徑不對所造成的,請看第二點,
        因為openssl小蛙只有在這邊的時候用到,
        所以就直接把openssl放在要執行keytool的地方,
        (例如: 在C:\執行 keytool,就把openssl.exe放在C:\下)
        不然就要把openssl的路徑設定在環境變數,
        或者是在openssl前面加上絕對路徑,
        讓系統找的到openssl的位置。

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料