debug.js
を使用していて、FB.login
を実行すると次のメッセージが表示されます。
現在のアクセストークンを上書きしています。つまり、他のアプリが別のアクセストークンを予期しているため、おそらく問題が発生します。グローバル設定をオーバーライドするのではなく、APIパラメータに直接access_tokenを渡すことを検討してください。
手がかりはありますか?
私は問題を解決しました。問題は、アプリが承認されていない許可を要求していて、アプリに関連付けられているFBアカウントを使用していないことでした。問題のユーザーをテストユーザーとして追加することで、問題は解決しました。この場合、Facebookが返すエラーがまったく役に立たないのは残念です。お役に立てれば!
FB.getLoginStatusに続いてFB.loginを呼び出したためと考えられます。このエラーは、最初に.getLoginStatusを呼び出したときにアクセストークンを受け取り、次に.loginを呼び出したときに上書きされたことを意味します。
これを修正するには、.getLoginStatusを削除するか(.loginを呼び出す場合はおそらく不要)、代わりに.getLoginStatusからアクセストークンを再利用して.login関数に渡します。
次のことを確認してください。
window.fbAsyncInit = function() {
FB.init({
appId : '{tu_id}',
cookie : true,
status : true,
xfbml : true,
version : 'v3.3'
});
私たちにとって、サーバーを新しいクラウドプロバイダーに移行した後、IPアドレスをホワイトリストに載せることができませんでした。 Facebook開発者ダッシュボードからのIPアドレスホワイトリストの更新:
設定->詳細->セキュリティ
問題を解決しました
本当の答えは、あなたが報告したようなFB javascript SDK自体に問題があることです。あなたは何も間違っていない可能性があります、エラーはおそらくFBのSDKにあります(AND/OR彼らのドキュメントで)
私はFB開発者コミュニティフォーラムで同様のエラーを報告して文書化しましたが、すぐに解決されるとは思っていません。 https://developers.facebook.com/community/threads/445494736399091/ これは、ChromeとFB JS SDK v5.0を使用している2019年12月に発生しました
更新:いくつかの変数が含まれていることがわかりました。たとえば、Chromeを使用しているときに、一部のコールバックが複数回実行され、異なるaccessToken、および質問で報告されたエラーメッセージ。
Edge Browserに切り替えたところ、アプリがテストモードのときに通常のFacebookユーザーは許可されないことが報告されました。 wtf? (Chromeでは、通常のfbユーザーが許可されていました)。そのため、開発者のダッシュボードでテストユーザーを作成しましたが、再度ログインすると、質問で報告されているエラーメッセージが表示されませんでした。
さて、Chromeに戻り、通常のfbユーザー(特別なテストユーザーではない)を使用しましたが、エラーメッセージが表示されないか、コールバックが何度も発生しません。 (これは、自分自身をリセットするためにいつかそれを与えたためですか?誰が知っていますか?)