2011-10-18 34 views
4

我剛纔想使用iframe頁面標籤裏面Facebook的註冊插件。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,如果你想這樣做點擊繼續,或撤消,如果你不(像這樣),當我點擊繼續沒有反應。

我用螢火蟲來檢查頁面,我認爲數據被髮送到另一個iframe中,但我不知道如何訪問它。我嘗試將目標更改爲_top,_self和_parent,但這也不起作用。我也試着創建一個專門使用網站屬性的新應用程序,並且也以相同的方式失敗。任何幫助感激地收到。

回答

1

據我所知,使用預先填寫個人信息時,target屬性被打破。也許這與確認彈出窗口出現時流程必須發生的方式有關,但AFAIK沒有記錄說兩者不能一起使用。在任何情況下,預填充數據似乎已經迫使target=_top無論你在屬性指定哪些效果。

既然如此,您將不得不指定外部頁面地址作爲redirect_uri,並在那裏處理數據,然後重定向回Facebook頁面地址。如有必要,您可以使用查詢字符串中的app_data參數傳回一些數據。

+0

你誤會了,在示例中redirect_uri是空白的,因爲它是由php生成的。我在現場示例中使用了一個外部網址,該網址適用於IE和Chrome,但不支持FF。測試區域位於:http://www.facebook.com/smallcoders?sk=app_257443180968911。如果您在Chrome或IE(9)中點擊註冊按鈕,則可以看到它重定向到顯示signed_request ['registration']數組中字段數的頁面,並列出這些密鑰。但在FF中沒有任何反應。 –

+0

這顯然是一個非常不同於你原來的問題所述的情況。你是說在FF中,當你在彈出窗口中單擊Continue時,彈出窗口就會消失,並且不會發生重定向?它似乎對我使用FF 3.6正常工作,我被重定向到一個頁面,上面寫着「簽名請求註冊字段有4個字段,它們如下:名稱,電子郵件,位置,性別」。它在我自己的選項卡中一直適用於測試。所以它看起來可能是您的瀏覽器特別是。 –

+0

我也試過在FF7中,並且它似乎正常工作。我看到一個關於不安全內容的警告,所以如果有一個選項設置爲不加載這樣的頁面(我在FF設置中沒有看到任何這樣的選項,但仍然值得檢查),可能會導致責怪。如果您還沒有,則應該從另一臺計算機進行測試,因爲它可能是您的特定瀏覽器設置中的某些內容。 –

-1

看來,我認爲你缺少的東西:

< fb:register >

在這裏你可以看到塔的屬性的OnValidate,它包含了註冊按鈕後調用的js函數的名稱被按下,誰是傳遞了包含用戶信息的整個對象。 Greetings;) Luca

+1

這只是讓他們註冊Facebook。 – tr4656

-1

在第二個代碼中,redirect-uri =「」需要一個值。它需要以您的網站網址爲前綴。

+0

假設OP沒有故意留下那個空白,那肯定會成爲問題 – Igy

+1

我沒有留下空白只是爲了提問 –

0

極有可能作爲註冊並收到回FB餅乾/頭連接到工作,你已經被標記最多。如果是這種情況,您需要在應用程序管理頁面的Facebook上取消註冊您的應用程序。一旦你這樣做了,按鈕將再次工作。

最後,如果用戶登錄到Facebook和已經連接到 您的應用程序,該按鈕會說登錄,也不會做任何事情的時候 點擊(但你的應用程序應該使用 getLoginStatus方法檢測到這種狀態並不顯示按鈕)。

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

可以調試使用

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

希望這有助於你的註冊狀態。