facebook canvas uygulamasının bağlam değiştirirken adres çubuğu URL'sini güncelleyebilmesini istiyorum. Örneğin, uygulamanızın ana URL'si https://apps.facebook.com/myapp/
ise ve kullanıcı ana ekrandaki bir öğeye tıklarsa, adres çubuğunda gösterilen URL'nin https://apps.facebook.com/myapp/1/
veya https://apps.facebook.com/myapp/#1
olarak değiştirilmesini isterim.facebook tuvalinde ana pencereyi itmek için bir yol var mı?
Normalde, uygulamam HTML5 history.pushState()
ile bunu yapabilirdi. Sorun, tuval uygulamasının bir iframe içinde çalıştığı ve üst pencerenin pushState
'a erişememesidir (iframe apps.facebook.com ile aynı etki alanı olmadığı için). Başka bir teknik, adresin sadece karma kısmını değiştiriyor olmalıdır, yani window.location.hash = "1"
, ama aynı sebepten dolayı iframe içinde de mümkün değildir.
O
window.parent.location = "https://apps.facebook.com/myapp/1/"
Ancak kullanarak, tüm sayfayı yeniden ebeveyn sayfası URL'sini değiştirmek mümkündür, bu üst sayfa, yeniden saniye iyi bir sayı kaplıyor ve daha sonra yeniden neden olur iframe - hepsi, kullanıcı için çok uzun ve sinir bozucu bir deneyim.
Bunu yapmanın bir yolu düşünülmemiş olabilir mi?
Haklısınız. Ne yazık ki, Facebook API'sı böyle bir yönteme sahip değildir, ancak IMHO, etki alanı önek eşleşmelerinin doğrulanmasının XSS'e karşı yeterince iyi bir koruma olduğunu varsayarak eklemek için oldukça basit bir yöntemdir. Böyle bir API'yi kullanımlarınız için yararlı bulabileceğinizi düşünüyorsanız, lütfen bunun için FB ile oy verin: https://developers.facebook.com/bugs/133461353503702 – onon15
+ 1ed. Şimdilik bunun için "dilek listesi" üzerinde bırakıyor gibi görünüyor. –