2014年12月26日

[iOS]Facebook SDK でログインできなかったときの対処法

Facebook SDK でログインがうまくいかなくてハマったので備忘メモ。

@Facebook SDK に添付される「FriendPickerSample」から、ログイン処理を抜粋して
 それだけを実行してみた
 ※パーミッションはサンプルとは変えています
if (!FBSession.activeSession.isOpen) {
[FBSession openActiveSessionWithReadPermissions:@[@"public_profile"]
allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
if (error) {
NSLog(@"ログイン失敗");
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:error.localizedDescription
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
} else if (session.isOpen) {
NSLog(@"ログイン成功");
}
}];
return;
}


A実行してみた
・Facebookの認証画面が表示されます ※Facebookアプリでサインアウトしていること!
・認証が終わるとページが変わるのですが、エラー画面 orz
 「この機能は現在ご利用いただけません:リクエスト処理中にエラーが発生しました。しばらくしてからもう一度お試しください。」
Screen Shot 2014-12-26 at 7.50.28.png

Bデベロッパー画面を確認する(Status & Review)
Status & Review の Approved Items を確認してみると、ログインに必要な権限(デフォルト)が無効になってました
スクリーンショット 2014-12-26 7.52.50.png

・これを解決するには、画面上の「Do you want to make this app and all its live features available to the general public?」を有効にする必要があるらしい。
 でも、トグルが押せない。。。

Cメールアドレスを登録する(Settings)
・Settings の Contact Email が入力されていると、有効になるらしい!
スクリーンショット 2014-12-26 7.54.51.png

Dアプリを公開にする(Status & Review)
・Status & Review に戻ると、さっきは押せなかったトグルが押せるようになっているので押す
・「公開する?」と聞かれるので、[確認]を押して先に進む
スクリーンショット 2014-12-26 7.56.39.png

・ログインに必要な権限が有効になった!
スクリーンショット 2014-12-26 7.56.55.png

以上で、無事ログインすることができました。


先の記事 にもあるように、
ログインするユーザーがテストユーザー登録(あるいは開発者/管理者)されていなくても
同じエラー画面が出ます。
これで丸一日潰れました orz


参考:
・Facebookへの投稿をFacebook SDKとSocial.frameworkで比較
 http://qiita.com/nofrmm/items/54f6086bf0606f4530ad

・FriendPickerSample
 →Facebook SDK に添付されているサンプルプロジェクトです。
posted by be-style at 08:23| Comment(0) | iOS

2014年12月24日

[iOS]Facebook SDK で認証エラー(102)になったときの対処

iOS(Objective-C)用の Facebook SDK のサンプルを動かそうとしたときに
ハマったので備忘メモ。

■エラー
・Facebookのデベロッパー画面の情報に誤りがあり、認証できない↓
---------------------------------------------------------
Error: Error Domain=com.facebook.Facebook.platform Code=102
"The operation couldn’t be completed. (com.facebook.Facebook.platform error 102.)"
UserInfo=0x1700efd80 {error_reason=The operation couldn’t be completed.
(FBAPIErrorDomain error 1.), error_description=An error occurred during publishing., app_id=1524168697838827, error_code=102}
---------------------------------------------------------

■状況
@デベロッパー画面(https://developers.facebook.com/docs/ios/jp?locale=ja_JP)にて、
 「Display Name」「Bundle ID」「Single Sine On(有効)」を設定している
A「.plist」に「FacebookAppID」「FacebookDisplayName」「URLスキーム」を設定している
B最新のSDKをダウンロードし、そのサンプルを使っている
Cサンプルは正常に動作。それを自分で登録したAの情報に書き換えると上記のエラーになる

■原因
・Facebookアプリ用で使っているFacebookアカウントの設定が完了していなかった。

ずっとデベロッパー画面とプログラムを確認していたけど、まさかこんなところに
原因があったとはー。
みなさんもお気をつけください。。。


上記は誤りでしたorz
原因は、デベロッパー登録したアカウントとチェックで使っていたアカウントが別だったからでした。
確かに、開発中のアプリなのにテストユーザー登録をしていないアカウントに見えてしまうのは問題です。

当たり前のことですが、気づくのが遅かった。。。

【参考】
・Facebook SDK iOSを使うおさらい
 http://uehi.info/2014/02/post-551/

・Facebook SDK - iOS - Fail to share URL (Error 102)
 http://stackoverflow.com/questions/18541510/facebook-sdk-ios-fail-to-share-url-error-102
posted by be-style at 18:08| Comment(0) | iOS

2014年11月14日

[iOS] iTunes Connect の申請でPNGファイルにアルファチャンネルが含まれていて申請に使えないときの対処

最近になって、iTunes Connect で申請するときにPNGファイルが通らないときがあります。
それは、アルファチャンネル付きのPNGファイルを使っているときです。

アルファチャンネルを削除する手順の備忘メモです。

※Mac OS 10.9.5 での話です

@アルファチャンネルを確認する
ファイルを「右クリック > 情報を見る」とします。

アルファチャンネルが含まれています↓
スクリーンショット 2014-11-14 20.11.57.png

Aデフォルトでインストールされている「プレビュー」というツールを使って開く
↓このツール(ビューワー?)です
スクリーンショット 2014-11-14 20.15.47.png

B「ファイル > 書き出す」を選択
スクリーンショット 2014-11-14 20.13.47.png

C同じPNGを書き出しますが、アルファチャンネルのチェックを外します
スクリーンショット 2014-11-14 20.14.14.png

Dアルファチャンネルが含まれていないことを確認
書き出されたPNGファイルについて「右クリック > 情報を見る」とします。
すると、アルファチャンネルが消えました!
スクリーンショット 2014-11-14 20.14.33.png

はじめ、PhotoShopの「チャンネル」からアルファチャンネルを削除して保存したのですがダメでした。
何故だろう。
でもこちらの方法はデフォルトでインストールされているツールを使えばよいのでオススメです。
posted by be-style at 21:00| Comment(0) | iOS