如何使用Facebook Graph API 获取"访问令牌".我有应用ID,用户的用户名和密码.只是我需要获取访问令牌,以便我可以访问新闻源,....和其他人.
我在设计与facebook一起使用的网站的用户登录/注销机制时遇到了一些麻烦.
某些facebook事件的行为似乎违反直觉:
当用户登录时,'auth.login'将在每个页面加载时触发.
正如我所料,FB.getLoginStatus()会在每个页面加载时触发
'auth.logout'仅在用户实际注销时触发,与'auth.login'不同,当用户未登录时,auth.logout不会在每个页面加载时触发.
我想构建一个系统来检测用户会话是否认为用户已登录到Facebook.如果用户的会话设置为相信他们已登录到Facebook,但实际上他们没有执行ajax调用服务器并更新会话.如果会话和facebook js sdk就用户是否登录达成一致,则不执行任何操作.如果用户的会话不知道用户登录到Facebook但js sdk说他们是,请使用ajax调用更新服务器.
我想创建一个与用户当前的Facebook登录状态同步的应用程序.我想这个应用程序登录/注销(通过执行ajax调用我的服务器来更新他们的会话),只要他们的Facebook状态发生变化.这很困难,因为我似乎无法可靠地检测用户何时登录或退出Facebook.
我遇到的一个特殊问题是当用户加载页面并且他们登录到facebook时,auth.login事件和FB.getLoginStatus()事件都会被激活.
我的最终问题是,我必须使用什么组合的facebook事件或一般策略来创建这样的应用程序.我想要的一个很好的例子是hulu.com实施facebook登录他们的网站.感谢您阅读本文!
<script>
window.fbAsyncInit = function() {
FB.init({appId: '<?=$facebook_app_id?>',
status: true,
cookie: false,
xfbml: true});
FB.getLoginStatus(function(response) {
console.log('getLoginStatus');
console.log(response);
if(response.session){
if(window.module.Globals.prototype.oauth_uid != response.session.uid){
//authenticated user unknown to server, update server and set session
window.module.VCAuth.prototype.session_login();
}
}else{
if(window.module.Globals.prototype.oauth_uid){
//unauthenticated user with authenticated session, update server and unset session
window.module.VCAuth.prototype.session_logout();
}
}
});
FB.Event.subscribe('auth.login', function(response){
console.log('auth.login');
console.log(response);
});
FB.Event.subscribe('auth.logout', function(response){
console.log('auth.logout');
console.log('response');
});
};
(function() {
var e = document.createElement('script'); e.async = …Run Code Online (Sandbox Code Playgroud) javascript facebook facebook-graph-api facebook-javascript-sdk
根据Facebook文档,comment.create回调包含一个Comment ID属性:
{
href: "", /* Open Graph URL of the Comment Plugin */
commentID: "", /* The commentID of the new comment */
}
Run Code Online (Sandbox Code Playgroud)
但是我发现回调包含一个不会在注释中更改的公共ID属性.例如,当我调试回调时,我得到一个commentID值"10150259852273822",但该值不会因该页面上留下的任何注释而改变.下面是来自Graph API的注释的示例,注意多个注释中的ID是相同的,但是它附加了一个"_XXXX"看起来实际上是标识符的数字.
{
"id": "10150259852273822_17973898",
"from": {
"name": "XXXXXX",
"id": "XXXXX"
},
"message": "newest comment",
"created_time": "2011-08-24T19:24:02+0000"
},
{
"id": "**10150259852273822**_17973932",
"from": {
"name": "XXXXX",
"id": "XXXXX"
},
"message": "brand newest comment.",
"created_time": "2011-08-24T19:25:40+0000"
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何通过comment.create事件实际获得完整的标识符?或者是否有另一个字段可用于预测commonid_commentID格式?
javascript plugins comments facebook facebook-javascript-sdk
我想在加载后动态地向页面添加一个Facebook发送按钮(iframe尚未支持)(由于网站的构建方式,它将成为用户通过AJAX加载的HTML模板的一部分)行动).
虽然我正在导入FB JavaScript SDK,但是当我通过AJAX加载新内容时,标记的元素不会"转换"到FB发送按钮中.
我试过了:
<div class="fb-send" data-href="example.com"></div>
Run Code Online (Sandbox Code Playgroud)
和
<fb:send href="example.com"></fb:send>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我正在使用FB.ui来显示"发送"对话框.它工作得很完美......除非我指定了我正在处理的新网站的链接.
这工作(FB对话框显示,收件人收到消息):
FB.ui({
method: 'send',
name: 'Check out my new site!',
link: 'http://nytimes.com/',
});
Run Code Online (Sandbox Code Playgroud)
但是当我将链接值更改为"http://plumspotter.com/"时它就会中断.
当我将'http://nytimes.com/'更改为我正在使用'http://plumspotter.com/'的网站时,它似乎可以正常工作,但收件人不会收到该消息.
使用Firebug> Net面板我看到当FB.ui发布到facebook.com/dialog/send时它返回500(内部服务器错误).
知道为什么Facebook不允许我使用FB.ui发送链接到http://plumspotter.com/?
所以我有fb api初始化
window.fbAsyncInit = function() {
FB.init({
appId : '351808841561163',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth: true
});
Run Code Online (Sandbox Code Playgroud)
我有一个单独的带有函数的js文件:
function example(){
FB.api(
'/me/[namespace]:visit',
'post',
{ channel: link},
function(response) {
if (!response || response.error) {
console.log(response.error);
} else {
console.log('Follow was success! Action ID: ' + response);
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我打电话给我时,我得到的FB是未定义的.
当我把函数放在window.fbAsyncInit里面时它工作正常,但我需要在window.fbAsyncInit之外调用FB.
如果有可能的方法吗?
我正在尝试在Chrome扩展程序中使用facebook sj sdk.我在我的扩展程序init上执行此操作:
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId: 'APP_ID', // App ID from the App Dashboard
//channelUrl : '//www.example.com/', // Channel File for x-domain communication
status: true, // check the login status upon init?
cookie: true, // set sessions cookies to allow your server to access the session?
xfbml: true // parse XFBML tags on this page?
});
// Additional initialization code such as adding Event Listeners goes here
console.log(FB);
};
// Load …Run Code Online (Sandbox Code Playgroud) facebook google-chrome google-chrome-extension facebook-javascript-sdk
我是第一次使用facebook API工作.从那里我发现我们可以获取名称,如下面的console.log(response.name); 但是,我怎样才能获取电子邮件和fbid?
谢谢,Enamul
<?php ?>
<div id="fb-root"></div>
<script>
// Additional JS functions here
window.fbAsyncInit = function() {
FB.init({
appId : 'f', // App ID
channelUrl : '//localhost/practices/phpTest/fblogin/login.php/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
// connected
} else if (response.status === 'not_authorized') {
// not_authorized
login();
} else …Run Code Online (Sandbox Code Playgroud) 在FB api v2.0 +中,非游戏应用程序可以使用apprequests https://developers.facebook.com/docs/games/requests/v2.2#implementation吗?我测试了我们的应用程序被归类为购物应用程序似乎能够在切换到FB v2.1时无问题地使用apprequests,但是在https://developers.facebook.com/docs/games/requests/v2的链接上.2#实现,它说"请求可用于Canvas,iOS或Android上的游戏." 为什么我的测试显示apprequests api适用于我的购物应用程序的FB v2,但文档说它只适用于游戏应用程序?