在Edge上登录Facebook后,我得到一个空白的弹出屏幕,并且它没有返回我的网站。这仅在EDGE上发生。 Chrome,IE和Firefox可以正常工作。
我正在执行以下步骤:https://developers.facebook.com/docs/facebook-login/web
我正在使用Angular 6.0.3,Facebook应用程序是v2.8。我曾经使用过该库:https://github.com/abacritt/angularx-social-login但存在相同的问题。
在Edge上,单击我的登录按钮,出现弹出窗口,然后输入我的凭据。在Facebook弹出窗口中点击“登录”后,它将重定向到空白页面。该空白弹出页面的URL有许多查询参数,其中之一是我提供的指向我的网站的重定向地址,但弹出窗口保持空白,我面临着可怕的死亡白屏。如果我访问facebook.com,则可以看到我已登录,因此登录确实在后台进行。 如果我再次尝试使用登录按钮,它将检测到我已经在Facebook上登录(不需要弹出窗口),并且正确登录。
我已经检查了其他网站上的其他一些Facebook登录名,其流程正常。发生了一件非常奇怪的事情,我有点想办法调试它了。
具有以下URL的弹出框:https://www.facebook.com/v2.8/dialog/oauth?
这些是URL的参数:
channel:https://staticxx.facebook.com/connect/xd_arbiter/r/0P3pVtbsZok.js?version=42#cb=fc47f20d632548&domain=[URL_SITE]&origin=http://[URL_SITE]/f1b71a9e066ec68&relation=opener
redirect_uri:https://staticxx.facebook.com/connect/xd_arbiter/r/0P3pVtbsZok.js?version=42#cb=fe2a67e04514f4&domain=[URL_SITE]&origin=http://[URL_SITE]/f1b71a9e066ec68&relation=opener&frame=f314680605ed16c
display:popup
response_type:token,signed_request
domain:[URL_SITE]
origin:1
client_id:[FACEBOOK_APPID]
ret:login
sdk:joey
fallback_redirect_uri:http://[URL_SITE]/login
logger_id:60d7353d-4421-302a-736e-cd0fb03700c1
ext:1536240204
hash:Aeb1berMmtAvxEu3
这就是我所说的登录过程:
<div class="md-facebook-btn ng-scope ng-isolate-scope">
<button class="md-button md-ink-ripple" type="button" (click)="FacebookLogin()">
<span flex="" class="ng-binding ng-scope flex">{{ 'LOGIN.ENTER_FACEBOOK' | translate }}</span>
<div class="md-ripple-container"></div>
</button>
</div>
TS的登录过程
FacebookLogin() {
this.facebookAuthentication.login().then(
(userData) => {
...
}).catch((err: any) => {
...
});
}, (reason) => {
...
}
);
}
最后,该服务:
export class FacebookAuthenticationService {
constructor(private appConfig: AppConfigurationRef) { }
private FACEBOOK_RESPONSE_STATUS = {
CONNECTED: 'connected'
}
initialize = (): void => {
// config facebook startUp
(<any>window).fbAppID = this.appConfig.getConfig.FacebookAppId;
(<any>window).fbAsyncInit = function () {
let params = {
appId: (<any>window).fbAppID,
xfbml: true,
version: 'v2.8',
status: true,
cookie: true
};
FB.init(params);
FB.AppEvents.logPageView();
};
if (this.appConfig.getConfig.FacebookAppId) {
(function (d) {
var js,
fjs = d.getElementsByTagName('script')[0];
if (d.getElementById('facebook-jssdk')) return;
js = d.createElement('script');
js.id = 'facebook-jssdk';
js.async = true;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document));
}
}
// retorna o status do login do usuario no facebook
getLoginStatus = (): Promise<facebook.AuthResponse> => {
return new Promise((resolve, reject) => {
FB.getLoginStatus((response: any) => {
if (response.status === this.FACEBOOK_RESPONSE_STATUS.CONNECTED)
resolve(response);
else
reject(response);
});
});
};
login = (): Promise<facebook.AuthResponse> => {
return new Promise((resolve, reject) => {
FB.login((response) => {
if (response.authResponse)
resolve(response);
else
reject(response);
});
});
}
logout = (): Promise<facebook.AuthResponse> => {
return new Promise((resolve, reject) => {
FB.logout((response) => {
if (response.authResponse)
resolve(response);
else
reject(response);
});
});
}
}
Facebook应用程序位于客户端,处于调试模式,并且对网站和可以使用此应用程序的用户有一些限制。 记住!。在Chrome,IE和Firefox上运行正常。
我想念什么?有任何想法吗? 谢谢。