2

ユーザーが最初にフォームにアクセスしたときにFacebookにログインしていない場合を除いて、カスタムフィールドと期待どおりに機能するFacebook登録フォームを作成しました。

この状況では、フォームは画面に表示されず、次のエラーが表示されます。

このIDの登録フォームを読み込めません。以前にFacebookでこのアプリをブロックした可能性があります。Facebookのプライバシー設定に移動して、このアプリのブロックを解除します。(エラー:「client_id」が無効です。)

これはサイトで議論されていることはすでに知っていますが、他の場所で提供されているソリューションは私には機能しません。FacebookがサポートするXFBMLソリューションに基づいてこれを機能させたいと思っています(デモはこちらhttp://developers.facebook .com / docs / plugins / registerration /

Facebookからログアウトすると、私のコードのテストにアクセスできます。これは、Facebookの例から直接取得され、ここではほとんど変更されていません:https ://www.askanutritionist.com/fb.html

ちなみに、Facebookアプリの設定では、SOの他のユーザーが提案している一般的な修正であるため、サンドボックスは無効になっています。

御時間ありがとうございます。ノート; 私はこのトピックで他の既存の質問にコメントしたでしょうが、stackoverflowは私を(まだ)させません。

4

2 に答える 2

1

使用しているIDのアプリが人口統計学的に(年齢や国などで)制限されていないこと、およびサンドボックスモードになっていないことを確認してください。

制限付きまたはサンドボックスモードの場合、ログインしておらず、適用された制限を満たしている(またはサンドボックスモードの場合はアプリの管理者である)ユーザーは、ログインするまでアプリの存在またはその詳細を確認できません。 。

于 2013-02-25T23:13:23.897 に答える
1

ただ確認するため; 私は実際にこれを適切に修正したことはありません。代わりに、私は回避策を作成し、Facebook SDK を介して JavaScript チェックを実行し、Facebook 登録フォームのあるページに最初にアクセスしたときにユーザーがログインしているかどうかを確認することができました。

ログインしていない (または認証されていない) 場合は http リダイレクトを実行し、ページの後半でログインしている場合は、Facebook フォームを初期化するために呼び出します。

window.fbAsyncInit = function() {
FB.init({
    appId      : xxxx, // App ID
    channelUrl : 'http:///xxxxx/fbchannel.php', 
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
});

// Additional initialization code here
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        // all ok!
        //var uid = response.authResponse.userID;
        //var accessToken = response.authResponse.accessToken;
    } else if (response.status === 'not_authorized') {
        window.location.href="create_account_with_facebook?authorizefirst";
    } else {
        window.location.href="create_account_with_facebook?loginfirst";
    }
});
};
// Load the SDK Asynchronously
(function(d){
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
 }(document));
于 2013-08-09T09:43:06.627 に答える