使用javascript sdk登录Facebook,无需弹出窗口
我正在使用javascript sdk实现facebook登录。是否可以将用户重定向到完整登录页面,而不是显示弹出窗口?我尝试添加显示:“页面”,但似乎没有任何作用使用javascript sdk登录Facebook,无需弹出窗口,javascript,jquery,facebook,facebook-graph-api,facebook-javascript-sdk,Javascript,Jquery,Facebook,Facebook Graph Api,Facebook Javascript Sdk,我正在使用javascript sdk实现facebook登录。是否可以将用户重定向到完整登录页面,而不是显示弹出窗口?我尝试添加显示:“页面”,但似乎没有任何作用 FB.init({ appId: '123456789', cookie: true, status: true, xfbml: true, frictionlessRequests: true, oauth: true }); function login() { //this
FB.init({
appId: '123456789',
cookie: true,
status: true,
xfbml: true,
frictionlessRequests: true,
oauth: true
});
function login() { //this function called on click of login button
FB.login(function (response) {
//my code
}, { scope: 'email,publish_stream,read_stream,offline_access' });
});
谢谢登录时,至少会在弹出窗口中为我打开。如果你想让它显示在完整页面而不是弹出窗口,你应该考虑其他选项,比如服务器端认证,设置选项>代码>显示:页面 Works.
登录,它总是在弹出窗口中打开,至少对于我来说是这样。如果你想让它显示在完整页面而不是弹出窗口,你应该考虑其他选项,比如服务器端认证,设置选项>代码>显示:页面< /Cord> Works.
< P>这个帖子的答案之一为我工作: 这是代码。它应该在窗口之后运行。onload
var APPID = "YOUR_APP_ID"
var uri = encodeURI('http://example.com');
FB.init({ appId: APP_ID,
status: true, // check login status
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
//user is logged in
} else {
window.location = encodeURI("https://www.facebook.com/dialog/oauth?client_id=" + APPID + "&redirect_uri="+uri+"&response_type=token");
}
});
为了完整起见,下面是加载FBJSSDK的代码
// Load the SDK asynchronously
(function (d) {
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement('script');
js.id = id;
js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
这篇帖子上的一个答案对我很有用: 这是代码。它应该在
窗口之后运行。onload
var APPID = "YOUR_APP_ID"
var uri = encodeURI('http://example.com');
FB.init({ appId: APP_ID,
status: true, // check login status
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
//user is logged in
} else {
window.location = encodeURI("https://www.facebook.com/dialog/oauth?client_id=" + APPID + "&redirect_uri="+uri+"&response_type=token");
}
});
为了完整起见,下面是加载FBJSSDK的代码
// Load the SDK asynchronously
(function (d) {
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement('script');
js.id = id;
js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
该文档称为“登录时不使用Javascript SDK”,但当然,除了登录之外,您还可以在应用程序的其余逻辑中使用SDK。(尽管您可能每次都必须手动传递SDK操作的访问令牌,因为SDK没有提供用于设置访问令牌的文档化方法。)对于给定用户,访问令牌是否始终相同?它通常存储在DB中还是浏览器缓存中?还有,为什么我在使用SDK时不必处理访问令牌呢?不,不会。客户端站点获取的访问令牌仅在大约2小时内有效。是的,它存储在客户端的cookies中。当使用内置的
FB.login
进行身份验证时,您不必处理它,因为这需要设置适当的cookie和脚本内部值。但也有可能SDK已经在不使用SDK流的情况下从登录重定向URL的哈希部分获取访问令牌-我在客户端登录时从未使用过此方法,所以你可以试试,告诉我们结果。该文档称为“登录时不使用Javascript SDK”,但当然,除了登录之外,您还可以在应用程序的其余逻辑中使用SDK。(尽管您可能每次都必须手动传递SDK操作的访问令牌,因为SDK没有提供用于设置访问令牌的文档化方法。)对于给定用户,访问令牌是否始终相同?它通常存储在DB中还是浏览器缓存中?还有,为什么我在使用SDK时不必处理访问令牌呢?不,不会。客户端站点获取的访问令牌仅在大约2小时内有效。是的,它存储在客户端的cookies中。当使用内置的FB.login
进行身份验证时,您不必处理它,因为这需要设置适当的cookie和脚本内部值。但也有可能SDK已经在不使用SDK流的情况下从登录重定向URL的哈希部分获取访问令牌-我在客户端登录时从未使用过此方法,所以你可以试试,告诉我们结果。嗨,Smita,我正在使用javascript sdk及其打开的弹出窗口进行身份验证。是否有任何选项可用于防止弹出和打开页面替代它或任何其他选项。你帮我感激我。提前感谢。使用参数display:page应该可以做到这一点,尽管我上一次尝试在使用JavaScript SDK时并不奏效。对于服务器端身份验证,显示:页面按预期工作。签出此。这可能会有所帮助。感谢Smita您的评论。感谢我。嗨,Smita,我正在使用javascript sdk及其打开的弹出窗口进行身份验证。是否有任何选项可用于防止弹出和打开页面替代它或任何其他选项。你帮我感激我。提前感谢。使用参数display:page应该可以做到这一点,尽管我上一次尝试在使用JavaScript SDK时并不奏效。对于服务器端身份验证,显示:页面按预期工作。签出此。这可能会有所帮助。谢谢Smita您的评论。感谢我。您好,假设您的答案对我不起作用,您可以在这里发布所有javascript SDK代码,这些代码在没有打开facebook SDK弹出窗口的情况下工作吗?。谢谢你的帮助。提前谢谢。我添加了一些细节,但除非你能更好地描述你遇到的问题,否则我真的帮不了你。你好,假设你的答案对我不起作用,你能在这里发布所有javascript SDK代码吗?没有打开facebook SDK的弹出窗口?。谢谢你的帮助。提前谢谢。我补充了一些细节,但我真的不能帮你,除非你能更好地描述你遇到的问题。