我正在使用Facebook的Javascript SDK进行身份验证.我已经能够正确导入SDK并在我的页面上添加了一个Like按钮.但是,facebook登录按钮必须包含在标签中:
<fb:login-button/>
Run Code Online (Sandbox Code Playgroud)
我目前将Facebook登录教程中的所有代码都粘贴到我的index.html中,这是我项目中唯一包含React应用程序的html文件.但是,我需要将具有实际登录按钮的最后一部分放入我的React组件中.当我尝试这样做时,我收到以下错误:
ReactifyError: /Users/ritmatter/reps/js/components/Signup.jsx: Parse Error: Line 82: Unexpected end of input while parsing file: /Users/ritmatter/reps/js/components/Signup.jsx
sdk.js:61 The "fb-root" div has not been created, auto-creating
ping?client_id=894010190618709&domain=localhost&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.facebo…:1 Given URL is not allowed by the Application configuration.: One or more of the given URLs is not allowed by the App's settings. It must match the Website URL or Canvas URL, or the domain must be a subdomain of one of the App's domains.
Run Code Online (Sandbox Code Playgroud)
如何让登录按钮做出反应?
我在Firefox上的JS控制台中遇到了一个新错误,我没有更改代码.我没有在其他浏览器中得到此错误,似乎不会影响我的代码的功能.它显然在某种程度上与Firefox相关,但它似乎将错误指向我的异步加载的Facebook JS SDK.
现在使用该SDK的其他人在Firefox中看到了这个吗?任何帮助或见解?这是完整的消息:内容安全策略:无法解析无效的源chrome-extension:// lifbcibllhkdhoafpjfnlhfpfgnpldfl
这是fb JS SDK中的一行:
*/__d("JSON3",[],function(a,b,c,d,e,f){(function(){var g={}.toString,h,i,j,k=e.exports={},l='{"A":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}',m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ba=new Date(-3509827334573292),ca,da,ea;try{ba=ba.getUTCFullYear()==-109252&&ba.getUTCMonth()===0&&ba.getUTCDate()==1&&ba.getUTCHours()==10&&ba.getUTCMinutes()==37&&ba.getUTCSeconds()==6&&ba.getUTCMilliseconds()==708;}catch(fa){}if(!ba){ca=Math.floor;da=[0,31,59,90,120,151,181,212,243,273,304,334];ea=function(ga,ha){return da[ha]+365*(ga-1970)+ca((ga-1969+(ha=+(ha>1)))/4)-ca((ga-1901+ha)/100)+ca((ga-1601+ha)/400);};}if(typeof JSON=="object"&&JSON){k.stringify=JSON.stringify;k.parse=JSON.parse;}if((m=typeof k.stringify=="function"&&!ea)){(ba=function(){return 1;}).toJSON=ba;try{m=k.stringify(0)==="0"&&k.stringify(new Number())==="0"&&k.stringify(new String())=='""'&&k.stringify(g)===j&&k.stringify(j)===j&&k.stringify()===j&&k.stringify(ba)==="1"&&k.stringify([ba])=="[1]"&&k.stringify([j])=="[null]"&&k.stringify(null)=="null"&&k.stringify([j,g,null])=="[null,null,null]"&&k.stringify({result:[ba,true,false,null,"\0\b\n\f\r\t"]})==l&&k.stringify(null,ba)==="1"&&k.stringify([1,2],null,1)=="[\n 1,\n 2\n]"&&k.stringify(new Date(-8.64e+15))=='"-271821-04-20T00:00:00.000Z"'&&k.stringify(new Date(8.64e+15))=='"+275760-09-13T00:00:00.000Z"'&&k.stringify(new Date(-62198755200000))=='"-000001-01-01T00:00:00.000Z"'&&k.stringify(new Date(-1))=='"1969-12-31T23:59:59.999Z"';}catch(fa){m=false;}}if(typeof k.parse=="function")try{if(k.parse("0")===0&&!k.parse(false)){ba=k.parse(l);if((r=ba.A.length==5&&ba.A[0]==1)){try{r=!k.parse('"\t"');}catch(fa){}if(r)try{r=k.parse("01")!=1;}catch(fa){}}}}catch(fa){r=false;}ba=l=null;if(!m||!r){if(!(h={}.hasOwnProperty))h=function(ga){var ha={},ia;if((ha.__proto__=null,ha.__proto__={toString:1},ha).toString!=g){h=function(ja){var ka=this.__proto__,la=ja in (this.__proto__=null,this);this.__proto__=ka;return la;};}else{ia=ha.constructor;h=function(ja){var ka=(this.constructor||ia).prototype;return ja in this&&!(ja in ka&&this[ja]===ka[ja]);};}ha=null;return h.call(this,ga);};i=function(ga,ha){var ia=0,ja,ka,la,ma;(ja=function(){this.valueOf=0;}).prototype.valueOf=0;ka=new ja();for(la in ka)if(h.call(ka,la))ia++;ja=ka=null;if(!ia){ka=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"];ma=function(na,oa){var pa=g.call(na)=="[object Function]",qa,ra;for(qa in na)if(!(pa&&qa=="prototype")&&h.call(na,qa))oa(qa);for(ra=ka.length;qa=ka[--ra];h.call(na,qa)&&oa(qa));};}else if(ia==2){ma=function(na,oa){var pa={},qa=g.call(na)=="[object Function]",ra;for(ra in na)if(!(qa&&ra=="prototype")&&!h.call(pa,ra)&&(pa[ra]=1)&&h.call(na,ra))oa(ra);};}else ma=function(na,oa){var pa=g.call(na)=="[object Function]",qa,ra;for(qa in na)if(!(pa&&qa=="prototype")&&h.call(na,qa)&&!(ra=qa==="constructor"))oa(qa);if(ra||h.call(na,(qa="constructor")))oa(qa);};return ma(ga,ha);};if(!m){n={"\\":"\\\\",'"':'\\"',"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"};o=function(ga,ha){return ("000000"+(ha||0)).slice(-ga);};p=function(ga){var ha='"',ia=0,ja;for(;ja=ga.charAt(ia);ia++)ha+='\\"\b\f\n\r\t'.indexOf(ja)>-1?n[ja]:ja<" "?"\\u00"+o(2,ja.charCodeAt(0).toString(16)):ja;return ha+'"';};q=function(ga,ha,ia,ja,ka,la,ma){var na=ha[ga],oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,ab,bb,cb;if(typeof na=="object"&&na){oa=g.call(na);if(oa=="[object Date]"&&!h.call(na,"toJSON")){if(na>-1/0&&na<1/0){if(ea){ra=ca(na/86400000);for(pa=ca(ra/365.2425)+1970-1;ea(pa+1,0)<=ra;pa++);for(qa=ca((ra-ea(pa,0))/30.42);ea(pa,qa+1)<=ra;qa++);ra=1+ra-ea(pa,qa);sa=(na%86400000+86400000)%86400000;ta=ca(sa/3600000)%24;ua=ca(sa/60000)%60;va=ca(sa/1000)%60;wa=sa%1000;}else{pa=na.getUTCFullYear();qa=na.getUTCMonth();ra=na.getUTCDate();ta=na.getUTCHours();ua=na.getUTCMinutes();va=na.getUTCSeconds();wa=na.getUTCMilliseconds();}na=(pa<=0||pa>=10000?(pa<0?"-":"+")+o(6,pa<0?-pa:pa):o(4,pa))+"-"+o(2,qa+1)+"-"+o(2,ra)+"T"+o(2,ta)+":"+o(2,ua)+":"+o(2,va)+"."+o(3,wa)+"Z";}else na=null;}else if(typeof na.toJSON=="function"&&((oa!="[object Number]"&&oa!="[object String]"&&oa!="[object Array]")||h.call(na,"toJSON")))na=na.toJSON(ga);}if(ia)na=ia.call(ha,ga,na);if(na===null)return "null";oa=g.call(na);if(oa=="[object Boolean]"){return ""+na;}else if(oa=="[object Number]"){return na>-1/0&&na<1/0?""+na:"null";}else if(oa=="[object String]")return p(na);if(typeof na=="object"){for(ab=ma.length;ab--;)if(ma[ab]===na)throw TypeError();ma.push(na);xa=[];bb=la;la+=ka;if(oa=="[object Array]"){for(za=0,ab=na.length;za<ab;cb||(cb=true),za++){ya=q(za,na,ia,ja,ka,la,ma);xa.push(ya===j?"null":ya);}return …Run Code Online (Sandbox Code Playgroud) 我正试图退出我用Facebook集成创建的网站.登录工作正常,但是当我想要注销时,Firebug一直给我这个错误:
FB.logout() 没有访问令牌调用.
我正在使用Facebook JavaScript SDK,我必须注销的代码如下所示:
$(document).ready($(function () {
$("#fblogout").click(facebooklogout);
}));
function facebooklogout() {
FB.logout(function (response) {
}
)};
Run Code Online (Sandbox Code Playgroud)
这是在Facebook开发人员文档中指定的注销代码,只是在document.ready上分配了一个按钮
在此代码之前我有FB.init()方法,一切运行正常.
如果有人知道为什么FB.logout没有访问令牌,那么我们将不胜感激.
我正在构建一个用户可以使用Facebook登录的应用程序.
我已经创建了如下的哈希键:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.app.package",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash", "KeyHash:"+ Base64.encodeToString(md.digest(),
Base64.DEFAULT));
Toast.makeText(getApplicationContext(), Base64.encodeToString(md.digest(),
Base64.DEFAULT), Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Run Code Online (Sandbox Code Playgroud)
在调试模式下,一切运行良好.
当我导出项目以供发布时,它会出现以下错误:
"Invalid key hash. The key hash ****************** does not match any stored key hashes"
Run Code Online (Sandbox Code Playgroud)
我粘贴了Facebook Developer仪表板中打印的密钥,但应用程序仍然给我错误.
我的行为的完整包是" com.app.package.views",我试图在仪表板中使用此包(作为Google Play包名称),但没有任何改变.
我该如何解决?如何生成正确的发布密钥哈希?
我正在使用JavaScript API为Facebook创建我的应用程序.问题是,它正在回归
email = undefined.
我不知道为什么?如果我在我的应用程序上使用Facebook登录/注销按钮,则警报会显示用户的正确电子邮件ID,但我不想这样做.我错过了什么?
这是我的代码:
<p><fb:login-button autologoutlink="true" perms="user_about_me,email"></fb:login-button></p>
<script>
window.fbAsyncInit = function () {
FB.init({ appId: '250180631699888', status: true, cookie: true,
xfbml: true
});
FB.getLoginStatus(function (response) {
if (response.session) {
greet();
}
});
};
(function () {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
} ());
function greet() {
FB.api('/me', function (response) {
alert('Welcome, ' + response.name + "!");
alert('Your email id is : '+ response.email);
});
} …Run Code Online (Sandbox Code Playgroud) 我有一个localhost网站和脚本FB.logout().在执行某些操作后,它无法将我注销,我在控制台中看到下一条错误消息:
Refused to display 'https://www.facebook.com/home.php' in a frame because it set 'X-Frame- Options' to 'DENY'.
Run Code Online (Sandbox Code Playgroud)
我搜索了所有StackOverflow,但没有找到任何可行的解决方案.网络检查员在home.php查询附近显示已取消.
所以我理解脚本试图在一个框架中加载Facebook主页,但它不能,因为它是禁止的.那么我该如何解决呢?为什么不logout()适合我?
我的代码
// Facebook Basic Example
window.fbAsyncInit = function() {
FB.init({
appId : '579651098766258',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Event.subscribe('auth.authResponseChange', function(response) {
if (response.status === 'connected') {
testAPI();
} else if (response.status === 'not_authorized') { …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Facebook Graph API开发一个Web应用程序.
我目前的目标是仅检索附有位置的帖子.
检索包含和不包含位置的帖子已经有效,我无法仅检索包含位置的帖子.
检索这两种类型的查询如下所示: '/me/feed?fields=id,name,message,picture,place,with_tags&limit=100&with=location'
应该仅检索具有位置的帖子的查询如下所示: /me/feed?fields=id,name,message,picture,place,with_tags&limit=100&with=location
&with=location我遇到的问题是,使用参数我Uncaught (in promise) undefined在代码的这一部分出错:
if (response.paging && response.paging.next) {
recursiveAPICall(response.paging.next);
} else {
resolve(postsArr);
}
} else {
// Error message comes from here
reject();
}
Run Code Online (Sandbox Code Playgroud)
日志显示以下内容:
DEBUG: -------------------------------
DEBUG: Ember : 2.4.5
DEBUG: Ember Data : 2.5.3
DEBUG: jQuery : 2.2.4
DEBUG: Ember Simple Auth : 1.1.0
DEBUG: -------------------------------
Object {error: Object}
error: Objectcode:
code: 1
1fbtrace_id: "H5cXMe7TJIn"
message: "An unknown error has occurred."
type: "OAuthException"
__proto__: …Run Code Online (Sandbox Code Playgroud) 我正在实现Facebook Like Button,但我遇到了宽度问题.我正在使用JavaScript SDK实现,而不是直接iframe.
根据文档,默认宽度是450.那没关系,我明白宽度可以通过标签width上的属性来改变<fb:like>.但是,我的问题是我真的无法指定固定宽度.由于按钮的性质,宽度在所有状态下都不是恒定的.例如,如果没有人喜欢该页面,它会显示"成为您喜欢的第一个朋友"; 如果有人,则会显示"XXX这样的人.成为你的第一个朋友"; 如果你喜欢它,它会显示"你喜欢这个" 或 "你和XXX这样的人".换句话说,按钮有许多状态,其中没有一个共享恒定的宽度.
如果不是因为我想显示浮动在右侧的按钮,这不会是一个大问题<div>.为了更清楚,这就是我正在做的事情:
<div id="wrapper">
<span class="fb-like"><fb:like show_faces="false" width="450" font="lucida grande""></fb:like></span>
...
</div>
<style type="text/css">
.fblike {
display: inline-block;
padding: 0.5em;
position: absolute;
right: 0;
top: 0;
}
#wrapper {
position: relative;
}
</style>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但问题是iframe现在具有450像素的恒定宽度.由于iframe是左对齐的,因此当文本较短时,右侧会有额外的空间.我尝试了各种各样的应用text-align: right无济于事.而这个问题更加复杂的是,这实际上只是FB SDK添加的iframe的花哨标记,所以我无力用CSS或JavaScript更改其任何内容.
我需要一个解决方案,它将(a)保持按钮区域的宽度动态(即,它根据内容而改变); 或(b)右键对齐按钮区域中的所有内容.
感谢任何人都可以给我的帮助!
javascript css facebook facebook-like facebook-javascript-sdk
我正在研究的网站有一个Facebook登录选项,但最近一位用户报告说它不适用于他们.我禁用了我的扩展等,我在控制台中遇到了这个错误:
Blocked a frame with origin "https://www.facebook.com" from accessing a frame
with origin "http://static.ak.facebook.com". The frame requesting access has
a protocol of "https", the frame being accessed has a protocol of "http".
Protocols must match.
Run Code Online (Sandbox Code Playgroud)
我可以提供给API的选项,使其能够在相同的协议上工作吗?仅供参考,主要网站运行在HTTP(无S)上.
这特别奇怪,因为它似乎突然停止工作(但有可能这总是一个问题因为我是新的并且正在学习这个系统).
我在页面底部有这个代码:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : ..., // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channel: …Run Code Online (Sandbox Code Playgroud) 我想知道我是否可以使用javascript创建文本文件并将文件保存在他/她的计算机的用户"下载"部分中.我的功能应该工作的方式是当用户单击提交按钮时,我在文本文件中填充用户信息,然后将其保存在他的机器中.我希望这可以在谷歌Chrome中工作.
这可能吗?我看到的帖子明确告诉我这是一个严重的安全问题.
javascript google-chrome javascript-events google-chrome-extension facebook-javascript-sdk