13

Stackoverflow 使用不同的方式登录到他们的网站,例如使用 facebook 登录。

使用 facebook 社交插件(请参阅社交插件),您可以添加点赞按钮或 facebook 登录。但是stackoverflow如何管理将facebook帐户与stackoverflow帐户连接起来?

4

3 回答 3

8

Facebook 社交插件:登录按钮 Facebook 提供了许多他们所谓的社交插件。我们感兴趣的是登录按钮。以下是将按钮放到您的网页上所涉及的基本步骤:

您的网站需要一个 Facebook 应用程序。转到https://developers.facebook.com/apps/并单击“创建新应用”按钮。

您的“应用显示名称”可能是有意义的。我通常选择网站的域名。您将来也可以将同一应用程序用于其他目的。“应用程序命名空间”必须是不包含任何特殊字符的东西。我通常使用我的应用程序显示名称,没有空格、句点等。现在您需要输入您的“应用程序域”和网站“站点 URL”。对于应用程序域,输入您的站点所在的域名。对于站点 URL,请输入您网站的完整 URL。例如,如果您的域是 name.com,那么您的站点 URL 应该类似于http://www.name.com. 输入正确信息后保存更改。现在您将有一个页面显示您的“App ID”和“App Secret”。只需将该页面保持打开状态,因为当您将登录按钮代码添加到您的页面时,您将需要您的应用 ID。现在我们需要从 Facebook 获取登录按钮代码。转到http://developers.facebook.com/docs/reference/plugins/login/并单击“获取代码”按钮。从第一个框中复制 HTML5 代码,现在将其放在网页正文选项卡的下方。代码应如下所示:

<div id="fb-root"></div>
<script>
   (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/all.js#xfbml=1&appId=APP_ID";
     fjs.parentNode.insertBefore(js, fjs);
   } (document, 'script', 'facebook-jssdk'));
</script>

在代码中,请务必将 APP_ID 替换为您为 Facebook 应用创建的应用 ID。现在将第二个框中的代码粘贴到您希望登录按钮所在的任何位置。代码应类似于:

<div class="fb-login-button" data-show-faces="false" data-width="200" data-max-rows="1"></div>

我将 data-show-faces 属性更改为 false,因为将其设置为 true 时,注销按钮将不会在用户登录时呈现。

于 2014-01-14T11:22:51.023 回答
4

Facebook 登录插件只为您提供一种将用户登录到您的网站的方法。您必须自己链接到您的内部系统(就像 StackOverflow 一样)。这意味着根据 Facebook 用户的详细信息创建一个新的“用户”。

例如,如果您的网站使用电子邮件地址作为“用户名”,那么您必须要求 Facebook 用户提供他们的电子邮件地址或请求电子邮件地址权限。然后,您为用户创建一个新帐户并给他们一个随机密码。

您还必须更改登录流程,以便现有用户可以使用他们的电子邮件/密码或关联的 Facebook 帐户登录。

于 2012-08-07T11:35:35.613 回答
0

在应用注册和 fb sdk 下载后遵循此代码:

<?php
require_once('lib/Facebook/FacebookSession.php');
require_once('lib/Facebook/FacebookRequest.php');
require_once('lib/Facebook/FacebookResponse.php');
require_once('lib/Facebook/FacebookSDKException.php');
require_once('lib/Facebook/FacebookRequestException.php');
require_once('lib/Facebook/FacebookRedirectLoginHelper.php');
require_once('lib/Facebook/FacebookAuthorizationException.php');
require_once('lib/Facebook/GraphObject.php');
require_once('lib/Facebook/GraphUser.php');
require_once('lib/Facebook/GraphSessionInfo.php');
require_once('lib/Facebook/Entities/AccessToken.php');
require_once('lib/Facebook/HttpClients/FacebookCurl.php');
require_once('lib/Facebook/HttpClients/FacebookHttpable.php');
require_once('lib/Facebook/HttpClients/FacebookCurlHttpclient.php');


use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;

use Facebook\FacebookHttpable;
use Facebook\FacebookCurlHttpClient;
use Facebook\FacebookCurl;



session_start();
$app_id="";
$app_secret="";
$redirect_url="";
FacebookSession::setDefaultApplication($app_id,$app_secret);
$helper=new FacebookRedirectLoginHelper($redirect_url);
$sess=$helper->getSessionFromRedirect();
if(isset($sess)){
	$request=new FacebookRequest($sess,'GET','/me');
	$response=$request->execute();
	$graph=$response->getGraphObject(GraphUser::classname());
	$name=$graph->getName();
	echo 'hi $name';
	
}
else
{
	echo '<a href="'.$helper->getLoginUrl().'">Login with Facebook</a>';
}

于 2015-03-23T15:26:54.397 回答