由于某种原因,我的onClick处理程序无法与facebook按钮(位于https://developers.facebook.com/docs/facebook-login/web/login-button/上)一起使用。但是它将与一个普通的div一起工作。
您知道为什么没有在Facebook按钮(第二格)上调用onClick吗?
template.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
template.setErrorHandler(new DefaultResponseErrorHandler() {
public boolean hasError(ClientHttpResponse response) throws IOException {
HttpStatus statusCode = response.getStatusCode();
return statusCode.series() == HttpStatus.Series.SERVER_ERROR;
}
});
症状:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
从未被呼叫。
编辑:跟进
基于@luschn的回复以及其他一些问题(特别是Implement Facebook API login with reactjs)
我必须规避我的<div onClick={this._handleFBLogin}>Facebook Login (working)</div>
<div onClick={this._handleFBLogin}
className="fb-login-button"
data-max-rows="1"
data-size="large"
data-button-type="continue_with"
data-show-faces="false"
data-auto-logout-link="false"
data-use-continue-as="false" />
函数,该函数调用一个函数来处理facebook身份验证并直接处理facebook身份验证。以下是onClick()
中的相关代码:
_handleFBLogin()
请注意绑定并订阅auth.statusChange。
而且由于此订阅事件,我不需要添加componentDidMount()
。
最后,我原始的_handleFBLogin代码为:
const facebookCallback = (response) => {
return this._facebookCallback(response)
}
window.fbAsyncInit = function() {
FB.init({
appId : FACEBOOK_APP_ID,
cookie : true, // enable cookies to allow the server to access the session
version : FACEBOOK_API_VERSION
});
FB.Event.subscribe('auth.statusChange', function(response) {
facebookCallback(response)
});
}.bind(this);
答案 0 :(得分:2)
您必须使用onlogin
参数/属性,因为您可以在文档中阅读。另外,您可以将自己的自定义按钮与此配合使用:https://developers.facebook.com/docs/reference/javascript/FB.login/
使用您自己的onClick方法将毫无意义,因为按钮插件会为您处理登录。