私はこのコードを持っています:
$facebook->api("/oauth/access_token?grant_type=fb_exchange_token&client_id=".$facebook->getAppId()."&client_secret=".$facebook->getAppSecret()."&fb_exchange_token=".$user->getFacebookAccessToken());
例外はスローしませんが、null を返します。有効期間の短い Facebook ユーザー アクセス トークンを有効期間の長い Facebook ユーザー アクセス トークンに拡張しようとしています。ただし、新しいトークンを生成し、新しいトークンがまだ生きている間にこのリクエストを呼び出した後、数時間待って、Facebook アカウントでログインしていないブラウザを起動しました。次に、テスト ユーザーで (Facebook ではなくアプリケーションに) ログインしましたが、残念ながら Facebook ログインに誘導されました。これは、Facebook ユーザー アクセス トークンが何らかの理由で無効になったことを意味します。
ここにあるドキュメントに基づいて作業していました。
では、Facebook が実際にトークンのライフ サイクルを延長できるようにするには、どのようにリクエストを送信すればよいか教えてもらえますか? また、Facebook ユーザー アクセス トークンのライフ サイクルが正常に延長されたかどうかを判断する方法がわかりません。(控えめに言っても、私は Facebook のファンではなく、Facebook API も初めてです)。
みんなありがとう。
編集:この記事を読んで、 setExtendedAccessToken メソッドをクラスにコピーし、ロジックをサポートするためにいくつかの変更を加えました。ユーザー Facebook アクセス トークンのライフサイクルを延長しようとするコードは次のとおりです。
$facebook->setExtendedAccessToken($user->getFacebookAccessToken());
これで、トークンと有効期限の 2 つの要素の配列が返されます。有効期限は「5174078」です。私はこの問題を解決するために正しい方向に進んでいると信じていますよね?