2011-10-18 31 views
4

Facebookの登録プラグインをiframeページのタブ内で使用しようとしました。Facebook登録プラグインがログインしているユーザーのデータをリダイレクト/送信しない

なぜ私はこれをやりたいのだろうかと疑問に思っている人は、Facebook登録プラグインを使ってFBページにニュースレターのサインアップフォームを作成したいと思っています。

私はこのコードを試してみました:

<iframe src="https://www.facebook.com/plugins/registration.php? 
      client_id=113869198637480& 
      redirect_uri=& 
      fields=name,birthday,gender,location,email" 
     scrolling="auto" 
     frameborder="no" 
     style="border:none" 
     allowTransparency="true" 
     width="100%" 
     height="330"> 
</iframe> 

このコード:どちらの場合も

<div id="fb-root"></div> 
<script src="https://connect.facebook.net/en_US/all.js#appId={YOUR_APP_ID}&xfbml=1"></script> 

<fb:registration 
    fields="name,birthday,gender,location,email" 
    redirect-uri="" 
    width="530"> 
</fb:registration> 

私は、そのページタブページタブアプリケーションのAPP_ID、キャンバスのURLを使用し、私は使用されているウェブサイトをウェブサイトの欄に記入しました。

プレフィックスFB情報を取り出してフォームに記入すると、受信ページのvar_dumpが正しい情報を出力しますが、事前に埋め込まれたFB情報を送信すると、ポップアップAPP_NAME_HEREに登録しています。この操作を続行するには、元に戻すか、そうでない場合に元に戻すか、続行をクリックしても何も起こりません。

Firebugを使用してページを検査しましたが、データが別のiframeに送信されていると思われますが、アクセス方法はわかりません。 _top、_self、_parentに変更しようとしましたが、これはうまくいきませんでした。私はまた、ウェブサイトの属性を使って新しいアプリケーションを作成しようとしましたが、これも同じように失敗しました。 ANYは感謝して感謝します。ここで

< fb:register >

あなたは誰に、登録ボタンが押された後に呼び出されるJS関数の名前が含まれているthaの属性onvalidateを、見ることができます:

答えて

1

私が知る限り、事前入力情報を使用すると、target属性が壊れています。おそらく、確認ポップアップが表示されたときにフローが起こらなければならない方法と関係がありますが、AFAIKは2つが一緒に使用できないことを文書化していません。いずれにしても、事前に入力されたデータは、属性に指定した内容に関係なく、強制的にtarget=_topの効果があるようです。

その場合、外部ページアドレスをredirect_uriとして指定し、そこでデータを処理してから、Facebookページアドレスにリダイレクトする必要があります。必要に応じて、クエリ文字列のapp_dataパラメータを使用してデータを戻すことができます。

+0

あなたは誤解しています。 IEとChromeでは動作するが、FFでは動作しないライブの例では、外部URLを使用しています。テストエリアはhttp://www.facebook.com/smallcoders?sk=app_257443180968911です。 ChromeまたはIE(9)の登録ボタンを押すと、signed_request ['registration']配列のフィールド数を示すページにリダイレクトされ、キーがリストされていることがわかります。しかし、FFでは何も起こりません。 –

+0

これは明らかに元の質問に記載されたシナリオとは非常に異なるシナリオです。 FFで、ポップアップでContinueをクリックするとポップアップが消えるだけでリダイレクトは起こらないと言っていますか?私はFF 3.6を使って正しく動作しているようですが、「Signed Request Registrationフィールドには4つのフィールドがあり、名前、電子メール、場所、性別」というページにリダイレクトされます。そして、それはいつも自分のタブでテストで私のために働いた。だから、あなたのブラウザでは特にそうかもしれません。 –

+0

FF7でも試してみましたが、やはり正しく動作しているようです。そのようなページをロードしないように設定されているオプションがあれば(私はFFの設定ではそのようなオプションは見当たりませんでしたが、まだチェックする価値がある)、もしかすると非難するかもしれないという警告が表示されます。特定のブラウザー設定に含まれている可能性が高いので、別のコンピューターからテストする必要があります。 –

-1

あなたは何かが欠けているように私には見えますユーザー情報を含むオブジェクト全体を渡しました。 Greetings;) Luca

+1

それだけで彼らはFacebookに登録しましょう。 – tr4656

-1

第2のコードでは、redirect-uri = ""に値が必要です。あなたのサイトURLの前に付ける必要があります。

+0

OPが意図的にその空白を残していないとすれば、それは間違いなく問題になる可能性があります – Igy

+1

私はそれを空白のままにしました –

0

ほとんどの場合、既に登録済みのフラグが付けられており、FB接続用のCookie /ヘッダーが受信されている可能性があります。このような場合は、アプリケーション管理ページでFacebook上でアプリケーションの登録を解除する必要があります。これを行うと、ボタンが再び機能します。

最後に、ユーザーがフェイスブックにログインし、すでに アプリケーションに接続されている場合、ボタンはログインを言うだろうと がクリックされたときに何もしません(ただし、あなたのアプリケーションが getLoginStatusメソッドを使用して、この状態を検出する必要がありますボタンを表示しない)。

https://developers.facebook.com/docs/plugins/registration/

あなたは

FB.Event.subscribe('auth.statusChange', function(response) { 
    if(!response.authResponse) return; 
    console.log(response) 
}); 

を使用して、あなたの登録状況をデバッグすることができ、この情報がお役に立てば幸いです。

関連する問題