gpt4 book ai didi

javascript - 使用 Javascript API 检索访问 token

转载 作者:数据小太阳 更新时间:2023-10-29 05:41:53 24 4
gpt4 key购买 nike

这是主题的跟进:Passing the signed_request along with the AJAX call to an ActionMethod decorated with CanvasAuthorize

因为我无法将 signed_request 设置为 null 以外的任何内容,我想我应该在客户端验证用户身份,然后将访问 token 与 AJAX 一起发送到服务器端 (ASP.NET MVC)称呼。不幸的是,我也无法让它工作!这是我的 Javascript 代码(我从文档中获得):

function postOnFacebook(msg, itemLink, pic, itemTitle, signedReq) {
var siteUrl = 'http://www.localhost:2732';

var appID = 193005690721590;
if (window.location.hash.length == 0) {
var path = 'https://www.facebook.com/dialog/oauth?';
var queryParams = ['client_id=' + appID,
'redirect_uri=' + window.location,
'response_type=token',
'scope=offline_access'];
var query = queryParams.join('&');
var url = path + query;
window.open(url);
} else {
var accessToken = window.location.hash.substring(1);
var path = "https://graph.facebook.com/me?";
var queryParams = [accessToken];
var query = queryParams.join('&');
var url = path + query;

// use jsonp to call the graph
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
}

$.ajax({
url: '/Facebook/Share',
data: {
'message': msg,
'link': siteUrl + itemLink,
'picture': siteUrl + pic,
'name' : itemTitle,
'accessToken': accessToken
},
type: 'get',
success: function(data) {
if(data.result == "success") {
alert("item was posted on facebook");
}
}
});
}

这是我的服务器端代码:

    public ActionResult Share(string message, string link, string picture, string name, string accessToken)
{
if (FacebookWebContext.Current.Session == null)
return RedirectToAction("Login");

var fb = new FacebookWebClient(accessToken);
var postArgs = new Dictionary<string, string>();
postArgs["message"] = message;
postArgs["link"] = link;
postArgs["picture"] = picture;
postArgs["name"] = name;

fb.Post("/me/feed", postArgs);
return Json(new {result = "success"}, JsonRequestBehavior.AllowGet);
}
}

更新:

我试过了 this但它对我不起作用。当我第一次点击该按钮时,它会将我重定向到 FB 登录页面,然后将我返回到我网站的主页。之后,它所做的只是重定向,然后立即返回主页。什么都没有发布。

有什么建议吗?

最佳答案

Facebook Javascript SDK 文档在这里:https://developers.facebook.com/docs/reference/javascript/

使用 Javascript SDK 获取访问 token 的方法有多种。有些是同步的,有些是异步的,有些让您订阅登录状态更改等事件,有些获取 session 对象(其中包含访问 token )以响应诸如权限提示之类的事情。

这是一个简单的例子:

<input id="AccessToken" type="text" value="" />
<div id="fb-root"></div>
<script src="https://connect.facebook.net/en_US/all.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {

FB.init({
appId: 'insert your appID value here',
cookie: true,
xfbml: true,
status: true });

FB.getLoginStatus(function (response) {
if (response.authResponse) {
$('#AccessToken').val(response.authResponse.accessToken);
} else {
// do something...maybe show a login prompt
}
});

});
</script>

一旦您获得了客户端捕获的访问 token ,您就可以将其以表单或 ajax 调用的形式发布到服务器。

要检查的另一件事是您的环境。 Facebook 将查看进行这些 api 调用的域是否与您的应用程序设置相匹配。在端口 80 上尝试它,并使用带有 DNS 的真实域指向您的服务器(而不是本地主机)。使用 DynDns 或其他一些此类服务来设置指向您的开发箱的域名和 DNS 条目。在您的开发箱上运行 IIS,您的应用程序位于端口 80 和防火墙/路由器端口转发设置,这样您就可以在与您的 Facebook 应用程序设置匹配的真实域上的端口 80 上提供您的页面。

关于javascript - 使用 Javascript API 检索访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com