PHP使用Yii2实现LinkedIn(Api)授权登录并获取信息Demo

  •   
  • 5406
  • 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(&#91;
			'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';
 

Yii2安装加载AuthClient来实现第三方的授权登录

PHP使用Yii2实现Twitter授权登录并获取信息Demo

PHP使用Yii2实现Facebook授权登录并获取信息Demo

PHP使用Yii2实现LinkedIn授权登录并获取信息Demo