Facebooker: Redirect după fb_user_action

voturi
0

Am încercat să Facebooker utilizatorului să publice povestiri pe Facebook. Atunci când un utilizator trimite un formular pe site - ul meu, eu sunt , folosind fb_user_action pentru a arăta dialogul întrebând dacă o poveste poate fi publicată. În cazul în care este respinsă, vreau să redirecționeze la o altă pagină.

Facebook documentația pentru showFeedDialog vorbește despre parametrul continuare. Este nevoie de o funcție JavaScript care va fi numit după dialogul este respinsă. Nu pot obține această funcție să fie numit.

<script language=javascript>
var continuation = function () {
  location.href = 'http://target-url.com';
}
</script>

<% init_fb_connect XFBML,Api do %>
  <%= fb_user_action(@action, @message, @prompt, 'continuation') %>
<% end %>

Totul funcționează perfect, cu excepția funcției de continuare nu poate fi apelată. Orice sugestii pentru ceea ce fac greșit?

Întrebat 26/04/2009 la 06:32
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Ok, nu am folosit Ruby în viața mea, dar ceva despre acel apel Facebooker arată greșit la mine. Iată ce fb_user_action arata ca de la link-ul:

def fb_user_action(action, user_message = "", prompt = "", callback = nil)
  update_page do |page|
    page.call "FB.Connect.showFeedDialog",action.template_id,action.data,action.target_ids,action.body_general,nil,page.literal("FB.RequireConnect.promptConnect"),callback,prompt,user_message
  end
end

Deci, bazat pe ceea ce m-am uitat în sus despre page.call, care mi se pare că va genera javascript ca aceasta:

FB.Connect.showFeedDialog(template_id,data,target_ids,body_general,nil,promptConnect,callback,prompt,user_message);

Cu toate acestea, semnătura showFeedDialog este:

FB.Connect.showFeedDialog(template_id,data,body_general,target_ids,callback,prompt,user_message)

Ordinea parametrilor că funcția fb_user_action Facebooker este generatoare pentru Javascript pare complet greșit pentru mine. Parametrul de apel invers pare că ar fi în schimb înlocuit cu un zero, deci nimic nu s-ar obține vreodată numit.

Ce se intampla daca in loc de asteptare fb_user_action, pe care tocmai ați folosit page.call-te, dar cu parametrii în ordinea corectă?

Din nou, am putea fi faptul că nu a înțelege page.call și / sau sintaxa Ruby aici. Dar aș dublu-a verifica dacă funcția Facebooker, și API-ul FB schimbă tot timpul.

Publicat 26/04/2009 la 07:24
sursa de către utilizator

voturi
2

Tocmai am săpat în asta mai mult. Cred că acest lucru este un bug Facebooker. A trebuit să înfășurați parametrul de apel invers într-un apel page.literal. Metoda modificată care funcționează este mai jos:

def fb_user_action(action, user_message = "", prompt = "", callback = nil)
  update_page do |page|
    page.call "FB.Connect.showFeedDialog",action.template_id,action.data,action.target_ids,action.body_general,nil,page.literal("FB.RequireConnect.promptConnect"),page.literal(callback),prompt,user_message
  end
end

Voi urmări cu dezvoltatorul Facebooker pentru a încerca să obțină acest lucru fix într-o versiune viitoare.

Publicat 26/04/2009 la 18:45
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more