欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP Oauth授权和本地加密实现方法

程序员文章站 2024-04-02 16:14:34
1.oauth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方 关键字:...

1.oauth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方

关键字:appkey appsecret token(令牌)

2.sso授权

如果本地手机装有微博客户端,则直接跳转到微博客户端,只需点击授权按钮,就可以登陆了 

qq第三方登陆使用oauth2.0实现,测试代码

点击下面的连接

https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=101334262&redirect_uri=http://www.qingguow.cn/sso.php

具体代码sso.php文件:

<?php
// qq登陆类
class sso{
  const app_id="101334262";
  const app_key="xxxxxxxxxxxxxxx";
  //初始化
  public static function init(){
    header("content-type:text/html;charset=utf-8");
  }
    //主函数
  public static function main(){
    //请求控制
    $action=$_get['action'];
    if(!empty($action)){
      sso::$action();
      return;
    }
    
    $par = 'grant_type=authorization_code'
    . '&client_id='.sso::app_id
    . '&client_secret='.sso::app_key
    . '&code='.$_request['code']
    . '&redirect_uri='.urlencode('http://www.qingguow.cn/sso.php');
    $rec=sso::posturlcontents("https://graph.qq.com/oauth2.0/token",$par);
    if(strpos($rec, 'access_token') !== false) {
      parse_str($rec, $accesstoken);
      $openidjson=sso::geturlcontents("https://graph.qq.com/oauth2.0/me?callback=callback&access_token={$accesstoken['access_token']}");
      $openidjson=str_replace("callback( ", "", $openidjson);
      $openidjson=str_replace(");", "", $openidjson);
      $openidjson=json_decode($openidjson,true);
      header("location:sso.php?action=getqqinfo&openid={$openidjson['openid']}&access_token={$accesstoken['access_token']}");
    }
  }
  //获取用户信息
  public static function getqqinfo(){
    sso::init();
    $openid=$_get['openid'];
    $access_token=$_get['access_token'];
    $userjson=sso::geturlcontents("https://graph.qq.com/user/get_user_info?openid={$openid}&access_token={$access_token}&oauth_consumer_key=".sso::app_id);
    $user=json_decode($userjson,true);
    print_r($user);
  }
  //get方式请求数据
  public static function geturlcontents($url){
    $ch = curl_init();
    curl_setopt($ch, curlopt_ssl_verifypeer, false);
    curl_setopt($ch, curlopt_header, false);
    curl_setopt($ch, curlopt_followlocation, true);
    curl_setopt($ch, curlopt_url, $url);
    curl_setopt($ch, curlopt_referer, $url);
    curl_setopt($ch, curlopt_returntransfer, true);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
  }
  //post请求数据
  public static function posturlcontents($url,$data = null){
    $curl = curl_init();
    curl_setopt($curl, curlopt_url, $url);
    curl_setopt($curl, curlopt_ssl_verifypeer, false);
    curl_setopt($curl, curlopt_ssl_verifyhost, false);
    if (!empty($data)){
    curl_setopt($curl, curlopt_post, 1);
    curl_setopt($curl, curlopt_postfields, $data);
    }
    curl_setopt($curl, curlopt_returntransfer, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
  }

}
sso::main();

以上这篇php oauth授权和本地加密实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。