1

私は CodeIgniter を数年間使用しています。私は物事を複雑にしすぎません。基本的には、コントローラーのコンストラクターでこれを行います。

$conf = array ( 'appId' => 'MY APP ID', 'secret' => 'MY SECRET KEY');

$facebook = $this->load->library('facebook/facebook',$conf);

次に、ユーザーをログインさせるために、 facebook が提供するexample.phpで同じメソッドを使用します(ユーザー ID を取得し、API 呼び出しをキャッチしてみてください)。私のコントローラーのコンストラクターのすべて

この方法論を使用して数年で、今まですべてがうまくいきました. 先週、私は過去に行ったすべてのアプリで基本的に同じコードを書くアプリをコーディングしました。問題は、oAuth アクセス トークン エラーが大量に発生していることです。アクセス トークンの有効期限が切れており、facebook API をクエリするには新しいトークンが必要です。

したがって、コードについてあまり情報を提供していないことはわかっていますが、議論したいのは方法論であり、コード自体ではありません。

アプリでFacebookのログインをどのように処理しますか? 私がやっている方法は大丈夫だと思いますか、それともコンストラクターではなくメソッドで行う必要がありますか? ユーザーがアプリに戻ったときに同じアクセス トークンを使用できるように、アクセス トークンをデータベースに保存する必要がありますか?

codeigniter の例があれば素晴らしいと思います。

事前にどうもありがとうございました!

Ps: CI セッション ライブラリを自動読み込みしています。有効期限が 1 年の channel.php ファイルを使用し、ブラウザーが Cookie を受け入れるように p3p ヘッダーを使用しています。何が欠けているのか本当にわかりません。P.s2:「スタックオーバーフローで関連する多くの質問を読みました。ここで読んだいくつかのアドバイスを試しましたが、同じ結果が得られました。

4

1 に答える 1

2

SDK のバージョン 3.2.1 にはバグが含まれており、(まだタグが付いていない) 3.2.2 リリースで修正されています。次の場所にある github で、base_facebook.php ファイルを最新バージョンに置き換えます。

https://raw.github.com/facebook/facebook-php-sdk/master/src/base_facebook.php

このコミット:

https://github.com/facebook/facebook-php-sdk/commit/ca9472b3312dab3fdcfbffb4e45eb091f582dcb7

「使用済みの認証トークンを再利用しようとしています」の修正を参照します。

これは私を狂気に駆り立てました。この更新されたコードを必要とするグラフ API で閉じられた抜け穴があった可能性があり、バグはありませんでした...いずれにせよ、それは最新で修正されています。

私のコードイグナイターコード:

$config['appId'] = '408995679168867';
$config['secret'] = 'secret';
$this->load->library('facebook', $config);

その後

$fbid = $this->facebook->getUser();
$this->fb_me = $this->facebook->api("/me");

そこにtry/catchなどを入れる必要がありますが、読みやすくするために省略しました。

于 2012-12-20T18:42:47.560 に答える