2010-10-20 97 views
0

我們已經使用了java-facebook庫很長一段時間(幾年),儘管它似乎是我們沒有通過FB獲得任何新用戶的原因之一,就是新用戶看到一個錯誤,我知道是因爲FB的新(六月份)安全。Facebook Canvas重定向URL

目前,我們有一個 「簡單」 的帆布FB的應用程序,使用FBML,用戶可以通過訪問:

http://apps.facebook.com/$MYAPP 

畫布網址傳回:

http://www.facebook.com/connect/uiserver.php?app_id=$APPID&next=http%3A%2F%2Fapps.facebook.com%2F$MYAPP&display=page&locale=en_US&return_session=0&fbconnect=0&canvas=1&legacy_return=1&method=permissions.request 

這個網址,新用戶(以前沒有授權我們的應用)回來了:

API Error Code: 100 
API Error Description: Invalid parameter 
Error Message: next is not owned by the application. 

現有用戶(誰啓用了應用程序在6月之前)能夠沒有任何問題地訪問它。

我們的網站網址被指定爲:

http://apps.facebook.com/$MYAPP 

這個錯誤似乎意味着,該網站的URL和下一個URL必須在同一個域,而不是在Facebook上。

我已經能夠改變網站的網址是:

http://www.OURREALAPP.com/ 

而且,域名爲:

OURREALAPP.com 

,然後才得以改變畫布URL返回:

https://graph.facebook.com/oauth/authorize?client_id=$CLIENT_ID&redirect_uri=http%3A%2F%2Fwww.OURREALAPP.com%2F$URL%2F 

這很好,第一次。它提示權限,並顯示正確的數據。但是,如果我們再次訪問它,它不會在「Facebook框架」中顯示它,即它將用戶直接發送到應用程序。

我也嘗試修改REDIRECT_URI去apps.facebook.com/$MYAPP ...但是這給了我們關於不擁有URL錯誤。

我們需要做什麼?有任何想法嗎?

謝謝!

回答

0

這是相當不值錢,一年後,但在這裏不用(在iFrame畫布應用程序):

爲了權威性新用戶(使用客戶端軟件開發工具包),你可以做兩件事情之一:

  1. 它們重新定向到將然後將它們重新定向到您選擇的URL的URL。
  2. 使用的JS SDK一個彈出式對話框提示他們(但只有在他們點擊的東西)

用戶誰已經authed您的應用程序,可能不需要做任何。

下面是最新的認證文檔: https://developers.facebook.com/docs/beta/authentication/

下面是一些代碼,不會使用JS SDK和轉發處理權限:

<script> 

    var fb_perms = "email,publish_actions" 
    var fb_url = "http://apps.facebook.com/awesome/" 

    FB.init({ 
     appId  : app_id, // App ID 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     oauth  : true, // enable OAuth 2.0 
     xfbml  : true // parse XFBML 
    }); 

    // login to facebook 
    FB.getLoginStatus(function(response) { 
     if (response.authResponse) return alert("user is logged in!") 
     var url = "https://www.facebook.com/dialog/oauth?" + 
      "client_id=" + app_id + "&" + 
      "redirect_uri=" + fb_url + "&" + 
      "scope=" + fb_perms + "&" + 
      "response_type=token" 
     top.location.href = url    
    }) 
</script> 

最佳,