facebook登录 api php

首先去后台新建一个develop ,

申请完成后,如果是线上测试需要开启一个开关



1.

做窗口弹出

<img οnclick="facebooklogin()" src="<?= Url::getSkinUrl("images/facebook.jpg") ?>" /><br/>
<script type="text/javascript">


        var newwindow;
        var intId;
        function facebooklogin(){
            var  screenX    = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft,
                 screenY    = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop,
                 outerWidth = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.body.clientWidth,
                 outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : (document.body.clientHeight - 22),
                 width    = 800,
                 height   = 450,
                 left     = parseInt(screenX + ((outerWidth - width) / 2), 10),
                 top      = parseInt(screenY + ((outerHeight - height) / 2.5), 10),
                 features = (
                    'width=' + width +
                    ',height=' + height +
                    ',left=' + left +
                    ',top=' + top
                  );
 
            newwindow=window.open('<?php echo $facebook_login_url; ?>','Login_by_facebook',features);
 
           if (window.focus) {newwindow.focus()}
          return false;
        }
 </script>

$facebook_login_url 是由下面的代码生成

1.下载集成包:php sdk 加载进来

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\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
public function getFacebookLoginUrl(){
		session_start();
		FacebookSession::setDefaultApplication( '71055737014','7b87b5d7997c7cd895abcfa5' );
		$facebook = new FacebookRedirectLoginHelper("http://ecommerce.onfancy.com/facebook/account/loginv",'710521635737014','7b87b5d799fdb15eb37c7cd895abcfa5' );


		$facebook_login_url = $facebook->getLoginUrl(array(
			//'fbconnect' => 1,
			//'canvas' => 0,
			'req_perms' => 'email,publish_stream',
			//'next' => 'http://ecommerce.onfancy.com/1353/fbconfig.php',
			//'redirect_uri' => 'http://ecommerce.onfancy.com/1353/fbconfig.php',
		));
		return $facebook_login_url;
	}


点击上面的图片后,直接可以访问对应的生成链接,链接大致为:

https://www.facebook.com/v2.2/dialog/oauth?client_id=710635737014&redirect_uri=http%3A%2F%2Fecommerce.onfancy.com%2Ffacebook%2Faccount%2Floginv&state=25e3cbc1f1fe6276c7b02c48a3&sdk=php-sdk-4.0.15&scope=email%2Cpublish_stream


2

然后需要编写是facebook登录成功后跳转回来的页面


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\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
public function actionLoginv(){
		Session::set('fbs',1);
		$domain = 'http://ecommerce.onfancy.com';
		FacebookSession::setDefaultApplication( '7105216014','7b87b5d799fdbcd895abcfa5' );
		// login helper with redirect_uri
			$helper = new FacebookRedirectLoginHelper('http://ecommerce.onfancy.com/facebook/account/loginv' );


		try {
		  $session = $helper->getSessionFromRedirect();
		} catch( FacebookRequestException $ex ) {
		  // When Facebook returns an error
		} catch( Exception $ex ) {
		  // When validation fails or other local issues
		}
		//echo 1;
		//var_dump($session);
		// see if we have a session
		if ( isset( $session ) ) {
		  // graph api request for user data
		  $request = new FacebookRequest( $session, 'GET', '/me' );
		  $response = $request->execute();
		  // get response
		  $graphObject = $response->getGraphObject();
				$fbid = $graphObject->getProperty('id');              // To Get Facebook ID
				$fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name
				$femail = $graphObject->getProperty('email');    // To Get Facebook email ID
			/* ---- Session Variables -----*/
				$_SESSION['FBID'] = $fbid;           
				$_SESSION['FULLNAME'] = $fbfullname;
				$_SESSION['EMAIL'] =  $femail;
				
				$this->accountLogin();
				exit;
				
		}else {
			$loginUrl = $helper->getLoginUrl();
			header("Location: ".$loginUrl);
		}
	}
	
	
	public function accountLogin(){
		$fb_id 		= $_SESSION['FBID'];
		$full_name 	= $_SESSION['FULLNAME'];
		$email 		= $_SESSION['EMAIL'];
		$model = Help::getModel('customer_accout');
		$customer = $model->findOne(["email"=>$email]);
		if(is_array($customer) && !empty($customer)){
			User::Login($customer);
		}else{
			$name_arr = explode(" ",$full_name);
			$first_name = $name_arr[0];
			$last_name = $name_arr[1];
			$group = User::getDefaultLoginAccountGroup();
			$password = $this->getRandomPassword();
			$user = [
				'first_name' 	=>$first_name,
				'last_name' 	=>$last_name,
				'email' 		=>$email,
				'group' 		=>$group,
				'password'		=>$password,
				'create_at'		=>Date::getCurrentDateTime(),
			];
			$model->save($user);
			User::Login($user);
		}
		echo "<script>
					window.close();
					window.opener.location.reload();
				</script>";
	}
	
	# 生成六位随机数
	public function getRandomPassword(){
		
		srand((double)microtime()*1000000);//create a random number feed.
		$ychar	=	"0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
		$list	=	explode(",",$ychar);
		for($i=0;$i<6;$i++){
			$randnum=rand(0,35); // 10+26;
			$authnum.=$list[$randnum];
		}
		//return $authnum;
		return User::getEncryptPassowrd($authnum);
	}
	



文献资料:

http://www.cnblogs.com/ouyangfang/archive/2012/02/21/2360946.html












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
爬取 Facebook API 的方法可以分为以下几步: 1. 注册为 Facebook 开发者,创建应用程序,并获取应用程序的访问令牌(Access Token)。 2. 使用访问令牌调用 Facebook API,获取所需数据。可以使用 Facebook 的 Graph API 进行访问,根据需要添加参数以获取不同类型的数据。 3. 解析 API 响应数据,并进行处理。API 返回的数据通常为 JSON 格式,可以使用 Python 的 `json` 库进行解析和处理。 下面是一个 Python 爬取 Facebook API 的示例代码,以获取用户信息为例: ```python import requests import json # 设置访问令牌 access_token = '<your_access_token>' # 设置要访问的 API 端点和参数 endpoint = 'https://graph.facebook.com/v12.0/<user_id>/' params = { 'fields': 'id,name,email,gender', 'access_token': access_token } # 发送 GET 请求并获取响应数据 response = requests.get(endpoint, params=params) data = json.loads(response.text) # 输出用户信息 print(f"ID: {data['id']}") print(f"Name: {data['name']}") print(f"Email: {data['email']}") print(f"Gender: {data['gender']}") ``` 在上面的示例代码中,需要将 `<your_access_token>` 替换为你的访问令牌,`<user_id>` 替换为要访问的用户 ID。可以设置 `fields` 参数来指定要获取的用户信息字段。然后,使用 `requests` 库发送 GET 请求,获取响应数据,并使用 `json` 库解析 JSON 格式的数据。最后,输出用户信息。 需要注意的是,FacebookAPI 使用方式可能会随时变化,建议查看最新的官方文档。同时,在进行数据爬取时,需要遵守 Facebook 的开发者政策和隐私政策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值