lilieのブログ -2ページ目

lilieのブログ

Webサイト、iPhone/Androidアプリの開発エンジニアの備忘録です。

Android+Facebook連携で、
「Configure your app key hashes at http://developers.facebook.com....」
というエラーで苦戦しました。。。

要はKey Hashesが間違っているのですが、
このKey Hashesの登録方法は以下となります。

1.Facebook.java「authorizeCallback」の「Failed to receive access token」あたりにブレークポイント
2.dataの「mExtras」にエラーメッセージ「invalid_key:Android key mismatch. Your key…」というエラーが出力
3.このエラー内に「The key」の後に続く文字がキーハッシュ。
  でも、ここがトラップで、「XXXXXXXX_XXXXXXXXXX」のようなデータフォーマットで出てきた場合、
  そのままこのハッシュ値をFacebook Developersの「Key Hashes」に登録しても全然動きません。。。
  注意点は「_」(アンダースコア)
  「_」は「/」に変換してくださいね。
  そして、終端に「=」を付け忘れないように。
  「XXXXXXXX_XXXXXXXXXX」は「XXXXXXXX/XXXXXXXXXX=」で登録しましょう。
  
opensslで実行する場合は、デバッグ版とリリース版でちょっと違います。
[デバッグ用]
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
パスワード:android

この「androiddebugkey」は固定。
「debug.keystore」はだいたい「C:\Documents and Settings\ログイン名\.android」にいます。

[リリース用]
keytool -exportcert -alias リリース用キー名 -keystore リリース用キー | openssl sha1 -binary | openssl base64
パスワード:リリース用キーのパスワード
OpenCVの設定にすごくとまどったので、備忘録。

1.まず、以下のリンクから、opencv2.frameworkをダウンロード

http://sourceforge.net/projects/opencvlibrary/files/opencv-ios/2.4.3/

opencv2.framework.zipからダウンロードしてください。
OpenCV-2.4.3.tar.bz2はビルド用ですが、ここからダウンロードしても
ビルドするための十分な設定ファイル等が不足しているようです。(2013/2月現在 ビルド失敗しました。)

opencv2.framework.zipからのダウンロードを強くオススメします。
こちらのファイルは面倒なビルドも不要で、Frameworkの設定でOKです!

2.プロジェクトフォルダに先ほどダウンロードしたopencv2.frameworkをコピーします。
それから、opencv2.frameworkをプロジェクトに配置します。

3.ここでビルドするとエラーが出まくります。
以下の設定をしてください。

・Accelerate.frameworkの追加
・AssetsLibrary.frameworkの追加
・AVFoundation.frameworkの追加
・Build SettingsのOther Linker Flagsに「 -lstdc++ -lz -lc++」を追加

※ヘッダファイルやリンカは、framework化のためなくても動きます。

4.それでもエラーが出る場合は、ちょっとわかりません。。。

2012/2/19 追記
XCode4.2で、iPhone4.3 Simulatorで起動すると、リンカエラーになります。
これはどうにもならなかったのでXCode4.5で実行すると動きました。。。
iPhone+Facebook連携で、アプリから認証ブラウザが立ち上がったとき、

「Safari cannot open the page because the address is invalid 」
と出てきてしまいました。。。

解決法ですが、Info.plistに以下の設定が必要です。

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb1234567890</string>
</array>
</dict>
</array>

 

通常(XML以外)だと、以下のように見えます。

▼URL types Array
  ▼Item 0 Dictionary
    ▼URL Schemes Array
      ▼Item 0     String   fb1234567890


1234567890はFacebookのappIdです。先頭に「fb」が必要です。