网络编程 
首页 > 网络编程 > 浏览文章

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

(编辑:jimmy 日期: 2025/4/10 浏览:3 次 )

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

关键字:appKey appSecret token(令牌)

2.SSO授权

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

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

点击下面的连接

https://graph.qq.com/oauth2.0/authorize"background-color: #ccffcc">具体代码sso.php文件:

<"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");
      $openidJson=str_replace("callback( ", "", $openidJson);
      $openidJson=str_replace(");", "", $openidJson);
      $openidJson=json_decode($openidJson,true);
      header("location:sso.php");
    }
  }
  //获取用户信息
  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".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授权和本地加密实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

上一篇:Yii2.0中的COOKIE和SESSION用法
下一篇:PHP 读取大文件并显示的简单实例(推荐)
一句话新闻
高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。