Ste*_*ino 7 facebook-javascript-sdk reactjs react-jsx
我第一次尝试为我的应用程序进行Facebook身份验证.我可以通过教程使其正常工作,我可以使用方便的Facebook登录按钮登录用户并将其注销,如Facebook SDK文档中的示例所示:
https://developers.facebook.com/docs/facebook-login/web
我喜欢使用这个按钮,因为它很容易,自动订阅Facebook品牌要求,并且因为它在用户登录时自动成为Facebook注销按钮.各方面都很完美.以下是按钮代码在自动注销时的外观:
<fb:login-button data-auto-logout-link="true" scope="public_profile" onlogin="checkLoginState();">
</fb:login-button>
Run Code Online (Sandbox Code Playgroud)
看起来像肉汁,直到我在ReactJS页面中尝试它.
// From the tutorials
<script type='text/babel'>
var CommentBox = React.createClass({
render: function() {
return (
<div className="commentBox">
Hello, world! I am a CommentBox.<br />
// MY ADDITION ... it breaks
<fb:login-button data-auto-logout-link="true" scope="public_profile,email" onlogin="checkLoginState();">
</fb:login-button>
</div>
);
}
});
ReactDOM.render(
<CommentBox />,
document.getElementById('content')
);
</script>
Run Code Online (Sandbox Code Playgroud)
我也尝试过这样:
ReactDOM.render(
<fb:login-button data-auto-logout-link="true" scope="public_profile,email" onlogin="checkLoginState();"></fb:login-button>,
document.getElementById('loginbutton')
);
Run Code Online (Sandbox Code Playgroud)
我不能以这种方式包含FB SDK登录按钮,因为它说"JSX不是XML".我觉得很公平.
有没有办法在React页面中包含这个方便的按钮,还是只需要创建一个自定义的FB按钮?我认为这似乎是一个常见的用例,因为Facebook给了我们React,我很惊讶我找不到更方便地使用这个解决方案的方法.(制作自定义按钮不是世界末日,但我想知道是否有更好/更简单的方法.)
在以下位置使用Facebook提供的代码生成器:
https://developers.facebook.com/docs/facebook-login/web/login-button
<div class="fb-login-button" data-size="medium" data-auto-logout-link="true"></div>
Run Code Online (Sandbox Code Playgroud)
请注意,要使其与本onlogin教程中演示的Facebook SDK 功能一起使用,您将需要添加一个自定义属性以链接该功能,例如:
<div class="fb-login-button" data-size="medium" data-auto-logout-link="true" data-onlogin="checkLoginState();"></div>
Run Code Online (Sandbox Code Playgroud)
此外,代码生成器将为SDK引导过程提供比默认教程更多的规范。因此,而不是本教程提供的代码:
// This won't work w/ custom <div ...> login buttons
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
Run Code Online (Sandbox Code Playgroud)
您需要从代码生成器中使用更多类似的内容:
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8&appId=YOUR-APP'S-ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
Run Code Online (Sandbox Code Playgroud)
这将确保使用正确版本的SDK(例如2.8与2.5)可以顺利进行所有操作,因此不会因包含自定义版本的FB SDK登录按钮而导致一系列控制台错误。
| 归档时间: |
|
| 查看次数: |
13014 次 |
| 最近记录: |