我们一直在使用java-facebook库很长一段时间(几年),虽然看起来我们没有通过FB获得任何新用户的一个原因是新用户看到了错误,我理解是因为FB的新(6月)安全。
目前,我们有一个“简单”的Canvas FB应用程序,使用FBML,用户可以通过以下方式访问:
http://apps.facebook.com/$MYAPP
Canvas网址正在返回:
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
此错误似乎暗示网站网址和下一个网址需要位于同一个网域,而不是Facebook上。
我已将网站网址更改为:
http://www.OURREALAPP.com/
并且,域名是:
OURREALAPP.com
然后,能够更改Canvas 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 ...但这会给我们一个关于不拥有该网址的错误。
我们需要做什么?有什么想法吗?
谢谢!
答案 0 :(得分:0)
一年之后,这一点非常毫无价值,但这里(对于iFrame Canvas应用程序):
为了授权新用户(使用客户端SDK),您可以执行以下两项操作之一:
已经为您的应用授权的用户可能不需要这样做。
以下是最新的身份验证文档: 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>
最佳,