ひとりまとめ

もろもろのメモ

iOS6のSocial.frameworkでfacebook連携の最初の一歩

iOS6になって、facebookとの連携が楽になったと聞いた。それなら僕でもと思って挑戦してみると、ハマルハマル・・・。
そんなこんなで、覚え書き。

【前提】
facebookからSDKhttps://developers.facebook.com/ios/)が出ているけど、今回はiOS6で加わったApple純正だけで作る。
なおこれから書く方法では、iOSでユーザー自身がfacebookアカウントを設定していることが必要です。従来のようにブラウザやfacebookアプリが起動して認証するとかっていう方法はフォローしてません。要注意!
 

【最初の分岐】
facebookの機能を使うといっても、次の2つでは準備が異なります。
・ただfacebookに投稿したいだけ
 → xcodeでコードを書くだけで完了

facebookからいろいろ値を取ってきたい
 → iTunesConnectでBundleIDを取得
   facebookに対してディベロッパー登録&アプリ登録が必要

投稿したいだけな場合は、次のステップは飛ばしちゃってOK。
 

【iTunesConnectでBundleIDを取得】
BundelIDとは、AppStoreでアプリを並べるために必要な一意の文字列。自分のドメインを逆から〜とかいうアレ。
今回のアプリ用に用意してない場合は、ここから作る。
http://developer.apple.com/iphone/manage/bundles/index.action
(iTunesConnectにログインして、「Manage Your Apps」→「AddNewApp」と進んでBundleIDのところに表示されるリンクと同じもの)
 
このページにある「iOS Apps」の「Identifiers」を押す。
 ↓
「+」を押してApp ID Descriptionに任意の文字列を入力。
これは後で変更できないので一応注意!

ワイルドカードという「*」を使ったものを登録すると、開発お試し段階では楽になるらしい
 

facebookディベロッパー登録】
このページの右上から申請。
https://developers.facebook.com/apps

2013/4現在ちょっと項目に違いがありましたが、大筋同じだったのでこちらのページを参考にしました。http://fb.dev-plus.jp/what-devplus/dev_register/
 

facebookにアプリ登録】
ディベロッパー登録が終わると先ほどのページの見栄えが変わって、アプリの登録が出来るようになる。
https://developers.facebook.com/apps

「+新しいアプリを作成」ボタンを押して、次の項目を入力
App Name
facebookのページ上で入れる項目。xcodeで作るアプリのプロジェクト名と一致する必要はない)

「基本設定」というページが開いたら、下の方にある「ネイティブiOSアプリ」というのを押す。
ここにある「バンドルID」が、iTunesConnectで登録したBundleIDのことで、ここを入れる。

リリース前の「これから開発しちゃうぞー!」という時は、最低これらの項目がはいっていればよさげです。
 

xcodeでBundele identifierを入力】
最後に、xcodeのプロジェクトの「info」→「Bundele identifier」にBundleIDを入れる。


実際にリリースする場合は、iTunesConnectでアプリの情報を登録したりfacebookiPhoneアプリストアIDを登録したりといろいろ必要だけど、一番最初の段階ではこれだけあればAPIを叩いて試したりというのができるみたい。
 

【ハマったかな?と思ったら】
それぞれの設定はきちんと終わってるはずなのに、ずっと次のようなエラーが出てました。
 〜 remote_app_id does not match stored id 〜
僕の場合は、iOSシミュレータに出来た今回のアプリを一度削除してシミュレータも再起動することで解決しました。
 

また、facebookでアプリを登録する際、詳細設定の項目でApp Typeを「Native/Desktop」にしなくちゃいけないという場合もあるようです。
初心者エンジニアのメモ帳
http://hiroism007-dev.hateblo.jp/entry/2012/10/05/iOS_6_Facebook_posting_procedure_ends_up_with_“remote_app_id_does_not_match_stored_id】の時。

 

さらに、API叩くときも最初は基本情報からだそう。
Scrapple From The Apple


こういう時に役立ちそうだなぁ。