Signin Tencent QQ Connect, get App ID and App Key, reference PHP SDK. The main principle is after authority on Tencent QQ account, store openid, access_token and other information in local database. Determine the access_token at user next signin.
Create users table
I prefer use migration, run in terminal:
$ php artisan migrate:make create_users_table
File: app/database/migrations/2014_07_19_1024_create_users_table.php
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function(Blueprint $table) { $table->increments('id'); $table->string('email'); $table->string('password'); $table->string('username', 60)->nullable(); // ... $table->timestamp('deleted_at')->nullable(); $table->timestamp('activated_at')->nullable(); $table->timestamp('signin_at')->nullable(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('users'); } }
Download and extracting PHP SDK, rename floder as api and place at app/api/qq
:
├── app │ ├── api │ │ ├── qq │ │ │ ├── class │ │ │ │ ├── ErrorCase.class.php │ │ │ │ ├── Oauth.class.php │ │ │ │ ├── QC.class.php │ │ │ │ ├── Recorder.class.php │ │ │ │ └── URL.class.php │ │ │ ├── comm │ │ │ │ ├── config.php │ │ │ │ ├── inc.php │ │ │ │ └── utils.php │ │ │ ├── qqConnectAPI.php │ │ │ └── storage │ │ ├── weibo │ │ ├── ... │ ├── commands │ ├── config │ ├── controllers │ ├── database │ ├── lang │ ├── ... ├── bootstrap ├── public ├── readme ├── vendor ├── ... ...
File: app/api/qq/comm/inc.php
<?php die('forbidden'); ?> {"appid":"xxxxxxxxx","appkey":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","callback":"yourdomain/auth/oauth-qq","scope":"get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,get_tenpay_addr","errorReport":true,"storageType":"file","host":"localhost","user":"root","password":"root","database":"test"}
File: route.php
// ... /* |-------------------------------------------------------------------------- | Basic Competence (Signin and Signup Routes) |-------------------------------------------------------------------------- | */ Route::group(array('prefix' => 'auth'), function () { $Authority = 'AuthorityController@'; // ... # Route Group Route::group(array('before' => 'guest'), function () use ($Authority) { // ... # Oauth QQ Signup Route::get('oauth-qq', array('as' => 'oauth-qq', 'uses' => $Authority.'getOauthQQ')); // ... }); }); // ...
File: AuthorityController.php
// ... /** * Action: Oauth QQ * @return Response */ public function getOauthQQ() { include_once( app_path('api/qq/qqConnectAPI.php' )); $qc = new QC(); $callback = $qc->qq_callback(); $openid = $qc->get_openid(); $qc = new QC($callback,$openid); $access_token = $qc->get_access_token(); $arr = $qc->get_user_info(); $nickname = $arr["nickname"]; $credentials = array('email' => $openid, 'password' => $access_token); if (Auth::attempt($credentials)) { // Signin Success return Redirect::intended(); } else { $user = new User; $user->email = $openid; $user->password = $access_token; $user->nickname = $nickname; $user->save(); return View::make('authority.oauthQQ'); } } // ...
File: app/views/authority/signup.blade.php
// ... <a href="{{ home('route') }}/oauth-qq.php"> <button type="button"> <i class="fa fa-qq fa-2x"></i>Connect Tencent QQ </button> </a> // ...
File: app/views/authority/oauthQQ.blade.php
// ... <p class="center">Authorization Successful</p> <p> <a href="{{ route('home') }}/oauth-qq.php"> <button type="button"> <i class="fa fa-qq fa-2x"></i> Login with your QQ account </button> </a> </p> // ...
File: public/ouath-qq.php
<?php require_once("../app/api/qq/qqConnectAPI.php"); $qc = new QC(); $qc->qq_login();
Result
Related Links Use Sina Weibo OAuth 2.0 Authorize in Laravel
I hope you like this tutorial. Share this tutorials on your favorite media to show your appreciation. Thanks!