新的Facebook API问题
有谁能帮我处理这个代码,告诉我出了什么问题吗 我的代码不再适用于新的Facebook API,我收到以下错误新的Facebook API问题,facebook,api,Facebook,Api,有谁能帮我处理这个代码,告诉我出了什么问题吗 我的代码不再适用于新的Facebook API,我收到以下错误 Uncaught Error: OAuth2 specification states that 'perms' should now be called 'scope'. Please update. Error is in http://connect.facebook.net/en_US/all.js line 23 即使我改变了它,它仍然不起作用 //THIS FUNCTI
Uncaught Error: OAuth2 specification states that 'perms' should now be called
'scope'. Please update.
Error is in http://connect.facebook.net/en_US/all.js line 23
即使我改变了它,它仍然不起作用
//THIS FUNCTION WILL INITIALIZE THE FACEBOOK API AND WILL ADD NEW FACEBOOK ACCOUNTS.
var apikey = $("#apikey").val();
//var tuittingID = $("#tuittingID").val();
FB.init({ apiKey: apikey, status : true, cookie : true, oauth: true });
FB.getLoginStatus(handleSessionResponse);
$('#FBlogin').live('click', function() {
FB.login(handleSessionResponse, {
scope:'manage_pages, publish_stream, offline_access, user_status,
read_insights'
});
return false;
});
function handleSessionResponse(response) {
if (!response.session || String(response.scope) == '') {
return;
}
else
var tuittingID = $.cookie("tuittingID");
$('#AccessToken').val(response.session.access_token);
$("#loader").show();
$.post("tuitting/facebook_lib/fbadd.php",
{ tuittingID: tuittingID, uid: FB.getSession().uid, usid:
FB.getSession().session_key, accesstoken: response.session.access_token },
function(data){
reloadAccounts();
$("#loader").hide();
FB.logout(function(response) {
}); //END LOGOUT FROM FACEBOOK AFTER SUCCESSFULL ACTION
}
); //END AJAX POST FUNCTION DATA
}
您是否进行了支持Oauth 2所需的更改?自10月1日起,SDK是强制性的,但直到昨天(2012年12月13日)SDK才被迫进入Oauth 2
请参阅-这里有更改内容的摘要和发布博客文章的链接-身份验证和javascript文档是您最可能需要检查是否正在进行更改的文档,因为这就是更改的地方您是否进行了支持Oauth 2所需的更改?自10月1日起,SDK是强制性的,但直到昨天(2012年12月13日)SDK才被迫进入Oauth 2
请参阅-这里有更改内容的摘要和发布博客帖子的链接-身份验证和javascript文档是最有可能需要检查您是否正在进行更改的文档,因为这是更改发生的地方。还要确保您使用的是FB.getAuthResponse()而不是FB.getSession()
http://developers.facebook.com/blog/post/525/还要确保使用的是FB.getAuthResponse()而不是FB.getSession()
http://developers.facebook.com/blog/post/525/我们也受到了这一变化的影响,我们做了以下变化以使其发挥作用。 FB.init()是必需的,代码如下,oauth设置为true
FB.init({
appId: 1234567890123,
oauth: true
})
现在不再有会话,response.session变成response.authResponse和response.session.uid变成response.authResponse.userID
FB.login(function(response) {
if (response.authResponse) {
var postData = {
FBID: response.authResponse.userID,
Access_Token: response.authResponse.accessToken
};
链接有关所需js更改的其他信息
我们也受到了这一变化的影响,我们做了以下变化以使其发挥作用。 FB.init()是必需的,代码如下,oauth设置为true
FB.init({
appId: 1234567890123,
oauth: true
})
现在不再有会话,response.session变成response.authResponse和response.session.uid变成response.authResponse.userID
FB.login(function(response) {
if (response.authResponse) {
var postData = {
FBID: response.authResponse.userID,
Access_Token: response.authResponse.accessToken
};
链接有关所需js更改的其他信息
这是Oauth 1.0代码: html
<div id="fb-root"></div>
<div class="fb-login-button" scope="email,user_birthday"
onlogin="afterFacebookConnect();" autologoutlink="false">Login con Facebook</div>
我为适应Oauth 2.0所做的更改:
window.fbAsyncInit = function () {
FB.init({
appId: 'id_of_app',
status: true,
cookie: true,
xfbml: true,
oauth:true // additional parameter
});
};
function afterFacebookConnect() {
FB.getLoginStatus(function (response) {
if (response.authResponse) {
window.location = "/facebook/login?token="
+ response.authResponse.accessToken;
} else {
// user clicked Cancel
}
});
}
附加:以下是处理响应的代码(ASP.NET MVC,C#):
window.fbAsyncInit = function () {
FB.init({
appId: 'id_of_app',
status: true,
cookie: true,
xfbml: true,
oauth:true // additional parameter
});
};
function afterFacebookConnect() {
FB.getLoginStatus(function (response) {
if (response.authResponse) {
window.location = "/facebook/login?token="
+ response.authResponse.accessToken;
} else {
// user clicked Cancel
}
});
}
使用Newtonsoft.Json.Linq
[RequireHttps]
public ActionResult login(string token)
{
WebClient client = new WebClient();
string JsonResult = client.DownloadString(string.Concat(
"https://graph.facebook.com/me?access_token=", token));
JObject jsonUserInfo = JObject.Parse(JsonResult);
string nombre = jsonUserInfo.Value<string>("first_name");
string segundo_apellido = jsonUserInfo.Value<string>("last_name");
string nombre_completo = jsonUserInfo.Value<string>("name");
string genero = jsonUserInfo.Value<string>("gender");
string email = jsonUserInfo.Value<string>("email");
string birthday = jsonUserInfo.Value<string>("birthday");
// here you do your logic to login the user
// otherwise you can send user to the registration
// form and fill in some data you received from facebook
}
[RequireHttps]
公共操作结果登录(字符串令牌)
{
WebClient客户端=新的WebClient();
string JsonResult=client.DownloadString(string.Concat(
"https://graph.facebook.com/me?access_token=“,代币”);
JObject jsonUserInfo=JObject.Parse(JsonResult);
字符串nombre=jsonUserInfo.Value(“名字”);
字符串segundo_apellido=jsonUserInfo.Value(“姓氏”);
字符串nombre_completo=jsonUserInfo.Value(“名称”);
字符串慷慨=jsonUserInfo.Value(“性别”);
字符串email=jsonUserInfo.Value(“email”);
字符串生日=jsonUserInfo.Value(“生日”);
//在这里,您可以按逻辑登录用户
//否则,您可以将用户发送到注册
//填写从facebook收到的一些数据
}
这是Oauth 1.0代码:
html
<div id="fb-root"></div>
<div class="fb-login-button" scope="email,user_birthday"
onlogin="afterFacebookConnect();" autologoutlink="false">Login con Facebook</div>
我为适应Oauth 2.0所做的更改:
window.fbAsyncInit = function () {
FB.init({
appId: 'id_of_app',
status: true,
cookie: true,
xfbml: true,
oauth:true // additional parameter
});
};
function afterFacebookConnect() {
FB.getLoginStatus(function (response) {
if (response.authResponse) {
window.location = "/facebook/login?token="
+ response.authResponse.accessToken;
} else {
// user clicked Cancel
}
});
}
附加:以下是处理响应的代码(ASP.NET MVC,C#):
window.fbAsyncInit = function () {
FB.init({
appId: 'id_of_app',
status: true,
cookie: true,
xfbml: true,
oauth:true // additional parameter
});
};
function afterFacebookConnect() {
FB.getLoginStatus(function (response) {
if (response.authResponse) {
window.location = "/facebook/login?token="
+ response.authResponse.accessToken;
} else {
// user clicked Cancel
}
});
}
使用Newtonsoft.Json.Linq
[RequireHttps]
public ActionResult login(string token)
{
WebClient client = new WebClient();
string JsonResult = client.DownloadString(string.Concat(
"https://graph.facebook.com/me?access_token=", token));
JObject jsonUserInfo = JObject.Parse(JsonResult);
string nombre = jsonUserInfo.Value<string>("first_name");
string segundo_apellido = jsonUserInfo.Value<string>("last_name");
string nombre_completo = jsonUserInfo.Value<string>("name");
string genero = jsonUserInfo.Value<string>("gender");
string email = jsonUserInfo.Value<string>("email");
string birthday = jsonUserInfo.Value<string>("birthday");
// here you do your logic to login the user
// otherwise you can send user to the registration
// form and fill in some data you received from facebook
}
[RequireHttps]
公共操作结果登录(字符串令牌)
{
WebClient客户端=新的WebClient();
string JsonResult=client.DownloadString(string.Concat(
"https://graph.facebook.com/me?access_token=“,代币”);
JObject jsonUserInfo=JObject.Parse(JsonResult);
字符串nombre=jsonUserInfo.Value(“名字”);
字符串segundo_apellido=jsonUserInfo.Value(“姓氏”);
字符串nombre_completo=jsonUserInfo.Value(“名称”);
字符串慷慨=jsonUserInfo.Value(“性别”);
字符串email=jsonUserInfo.Value(“email”);
字符串生日=jsonUserInfo.Value(“生日”);
//在这里,您可以按逻辑登录用户
//否则,您可以将用户发送到注册
//填写从facebook收到的一些数据
}
上面粘贴的链接包含所有必需的信息。如果您懒得阅读上面的页面,请参考我下面的答案,了解我们为使其正常工作所做的确切更改。那么您的意思是您确实将应用程序更新到了oauth 2?您仍然在该示例代码中使用response.session和response.session.uid,这意味着您不是yes。我使用response.session和response.session.uid来显示从那时到现在的变化。还修复了语法,使其更加上下文化。@user129206,如果您仍然使用response.session,那么您就不在oauth2上。response.session根本没有被使用,即使对于使用它的人,也会在session中被取消定义。我只是在下面的例子中提到了它,以便开发人员能够轻松地看到差异并进行更改。上面粘贴的链接包含了所有必需的信息。如果您懒得阅读上面的页面,请参考我下面的答案,了解我们为使其正常工作所做的确切更改。那么您的意思是您确实将应用程序更新到了oauth 2?您仍然在该示例代码中使用response.session和response.session.uid,这意味着您不是yes。我使用response.session和response.session.uid来显示从那时到现在的变化。还修复了语法,使其更加上下文化。@user129206,如果您仍然使用response.session,那么您就不在oauth2上。response.session根本没有被使用,即使对于使用它的人,也会在session中被取消定义。我只是在下面的示例中提到了它,以便开发人员能够轻松地