PHP使用Yii2实现LinkedIn(Api)授权登录并获取信息Demo
- 6367
- PHP
- 33
- super_dodo
- 2016/11/08
在已经安装好相关的扩展的情况下(若未安装Yii2的扩展请移步参考底部的安转的相关文章),注册开发者账号,配置开发者相关的信息。
之后直接上代码:LinkedinController.php
<?php
/**
 * User: Dodobook
 * Date: 2016/11/1 08:08:08
 */
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\httpclient\Client;
use yii\authclient\clients\LinkedIn;
//此部分为直接使用官方的文档实践.
//使用Yii的扩展yii\authclient
//备注说明: LinkedIn 里面的两个地址有变化,需要更新$authUrl和$tokenUrl
//回调地址需要在LinkedIn的后台进行配置设置(可以设置多个)
//https://developer.linkedin.com/docs/oauth2
//https://www.linkedin.com/developer/apps/4*********5/auth
class LinkedinController extends Controller{
	const CLIENT_ID = '8***********za';
	const CLIENT_SECRET = 'tO*************Dl';
	//授权地址
	public function actionAuthUrl(){
		//实例化类
		$client = new LinkedIn([
			'clientId' => self::CLIENT_ID,
			'clientSecret' => self::CLIENT_SECRET,
		]);
		$param = ['redirect_uri'=>'http://sns.*********.com/linkedin/call-back'];
		$url = $client->buildAuthUrl($param);                            //组装成新的URL地址
		$url .= '&force_login=true';                                     //强制用户登录(not work)
		return Yii::$app->getResponse()->redirect($url);                 //跳转到授权的页面
	}
	//回调地址
	public function actionCallBack(){
		//实例化类
		$client = new LinkedIn([
			'clientId' => self::CLIENT_ID,
			'clientSecret' => self::CLIENT_SECRET,
		]);
		$authCode = Yii::$app->request->get('code');
		$token = $client->fetchAccessToken($authCode);
		$access_token = $token->getParam('access_token');   //179个字符
		$expires_in = $token->getParam('expires_in');       //过期时间--5184000 = 6天
		$userInfo = $client->getUserAttributes();
		$userEmail = $userInfo['email'];        // string 'do@aaaa.com' (length=14)
		$userId  = $userInfo['id'];             //string '6p******4q' (length=10)
        Yii::$app->end();
	  /*
	  'id' => string '6p******4q' (length=10)
	  'email-address' => string 'do@aaaa.com' (length=14)
	  'first-name' => string '大大' (length=3)
	  'last-name' => string '小' (length=3)
	  'public-profile-url' => string 'https://www.linkedin.com/in/***************b' (length=57)
	  'email' => string 'do@aaaa.com' (length=14)
	  'first_name' => string '大大' (length=3)
	  'last_name' => string '小' (length=3)*/
		//建立一张表--存储该内容
	}
	
}
备注说明:因为linkedin的接口文档地址已更新,但是插件的尚未更新,请更新修改为:
class LinkedIn extends OAuth2
{
    /**
     * @inheritdoc
     */
//    public $authUrl = 'https://www.linkedin.com/uas/oauth2/authorization';
    public $authUrl = 'https://www.linkedin.com/oauth/v2/authorization';	//新的
    /**
     * @inheritdoc
     */
   // public $tokenUrl = 'https://www.linkedin.com/uas/oauth2/accessToken';
    public $tokenUrl = 'https://www.linkedin.com/oauth/v2/accessToken';		//新的
    
    /**
     * @inheritdoc
     */
    public $apiBaseUrl = 'https://api.linkedin.com/v1';
 
PHP使用Yii2实现Twitter授权登录并获取信息Demo
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
 
			 
         
         
		 
				

 
				 
				 
				 
				 
				
