2010-10-06 24 views
14

Facebook kanvas iframe uygulamasında bir sorunum var.Facebook iframe IE'de çalışmıyor; oturum/giriş sorunu?

basit bir anket tarzı uygulama oluşturmak oturumları kullanıyorum. Her sayfada, form gönderildiğinde, yanıt bir oturum dizisinde saklanır ve sayfa numarası bir sayı artar, ardından bir sonraki soru görüntülenir. Basit şeyler.

Ancak bu uygulama; Internet Explorer hariç her tarayıcıda çalışır. Internet Explorer'da

, sayfa değişikliği oturumu geçersiz başka bir sayfa değişikliği geçmesi görünür ve baştan başlar. Arama yaptım ve aradım, ancak bu davranışın nedenini bulamıyorum.

Ben http://gist.github.com/613083 de uygulamanın kaynak kodunu yerleştirdiğiniz. App http://www.github.com/facebook/php-sdk adresinde Facebook tarafından sağlanan standart PHP SDK kullanıyor.

cevap

33

Bir 3. parti çerez bir sorun yaşıyor olabilir. Bir yönlendirme döngüsüne yakalanırsanız, muhtemelen bu durumdur. php

Çözüm, bu ekleyin:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); 

Bu benim için doğru yukarı temizledi. Kötü bir yönlendirme sorunu yaşıyordum.

Bu, etki alanı çerezlerinin sayfa için çalışmasına izin verir, çünkü çerez iFrame'iniz tarafından Facebook için ayarlandığından emin olun. http://adamyoung.net/IE-Blocking-iFrame-Cookies

den aktaran

+1

Bu çalıştı. Ama gerçekten ne yaptığını ya da yaptıklarını bilmediğimi bilmekten nefret ediyorum. Birini detaylandırabilir mi? Facebook'un P3P yardım sitesi (http://fb.me/p3p) bana hiç yardımcı olmadı. –

+0

Aslında, Windows 7'de IE9'daki sorunu giderdi, ancak Windows XP'de IE8'i değil. Bunun için bir açıklama var mı? –

+0

Nevermind, IE8'de de çalışıyor. Tam olarak doğru başlık göndermeyen bir hatam vardı. –

2

"sorunu kısaca Gizlilik Tercihleri ​​veya P3P Platformu adında bir W3C standardı ile yatıyor. Sen bağlantı yoluyla sıkıcı şeyler hakkında tüm okumak veya başka hemen altında P3P Kompakt Politikası başlığını yükleyebilirsiniz Bu, Internet Explorer'ın üçüncü taraf çerezinizi kabul etmesine izin verecektir. Başlığı bir çerez oluşturan her sayfaya göndermeniz gerekir. "

0

Bu soruna P3P üstbilgileri veya başka garip şeyler kullanmadan farklı bir yaklaşım öneririm. Sorunlar, iki uygulama farklı etki alanlarında barındırıldığı için ortaya çıkar. Özellikle, uygulamanızın oturumu başlatması veya müşteriye bir çerez kaydetmesi gerektiğinde, belirlediğiniz tüm çerezler veya oturumlar "3. taraf" olarak kabul edilir. Oturumlarınızı veya çerezleri başarıyla ayarlayabilmenin tek yolu, kullanıcılarınız daha önce alan adınızı ziyaret etmişse şeklindedir.

Yani benim çözümdür:

  • yerine iframe ile sayfası gösterilmesi barındıran uygulama, daha önce belirli bir URL'ye (: www.yourappsite.com/customer=9rUwkNmawUELbB2 ex) ile uygulamanızı çağırır.
  • Başvurunuz belirteci denetler ve geçerli olup olmadığını doğrular (bu adım, farklı müşterileri arasında ayrım yapmak gereken tek ise)
  • Tamam eğer istemci üzerinde bir çerez (bunu yapabilirsiniz değil uygulamanızda çünkü henüz bir iç çerçeveye)
  • daha sonra orijinal URL'ye() tekrar uygulamanız çağıran iframe sahip birine yönlendirir.

Bundan sonra (ilk çerez müşteriye ait olduğu sürece), uygulamanız artık güvendiğiniz için iframe içinde barındırılsa bile oturumları ve çerezleri kullanabilirsiniz.

P3P kullanmadan sorunu başarıyla çözdüm.

+0

Bu soru dört yıl önce neredeyse dört yıl önce soruldu ve cevaplandı. –

+1

Evet, ama bu bir topikal soru. Birisi bugün bile bu problemle yüzleşebilirdi. –

+0

Facebook uygulamaları artık bu sorundan muzdarip gibi görünmüyor. –

İlgili konular