ええやんブログ

ええやないかのええやんブログ

FacebookアプリでError code: 196

はい。eeyanaikaです。

さて、今回はFacebookアプリをiPhoneで動かした際に「Error code: 196」というエラーが出力される現象についてです。

これはこちらの記事にありますように、モバイル版はredirect_uriを渡したらダメだそうです。

モバイル版およびiPhoneアプリ版の場合は、下記のようにredirect_uriを渡さないようにするとうまく動きました。

<?php
require '../src/facebook.php';

// アプリのインスタンスを作成(appIdとsecretは適宜置き換えてね)
$facebook = new Facebook(array(
        "appId"  => アプリID,
        "secret" => アプリシークレットコード,
));

try {

    // 現在ログイン中のユーザー情報を取得する
    $user_id = $facebook->getUser();

} catch (FacebookApiException $e) {
    // Facebook APIエラー
}

if (!$user_id) {

    $is_app = (strpos($ua, 'FBAN') !== FALSE);
    $is_mobile = (strpos($ua, 'iPhone') !== FALSE || strpos($ua, 'iPad') !== FALSE || strpos($ua, 'iPod') !== FALSE || strpos($ua, 'Android') !== FALSE);

    // Facebookのアプリ経由の場合はredirect_uriは指定しない
    if ($is_app == TRUE || $is_mobile == TRUE){

        $url = $facebook->getLoginUrl(array(
                "scope"        => "publish_stream"
        ));

    } else {

        $url = $facebook->getLoginUrl(array(
                "redirect_uri" => "http://apps.facebook.com/".アプリ名,
                "scope"        => "publish_stream"
        ));

    }

    // アプリ未登録ユーザーなら facebook の認証ページへ遷移
    echo "<script type='text/javascript'>top.location.href = '{$url}'</script>";
    exit;

}

それでは。