加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

[PHP] Oauth授权和本地加密

发布时间:2020-05-25 03:14:59 所属栏目:PHP 来源:互联网
导读:1.Oauth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方关键字:appKey appSecret token(令牌)2.SSO授权如果本地手机装有微博客户端,则直接跳转到微

<p align="justify">1.Oauth<span style="font-family: 宋体;">(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方


<p align="justify">


<p align="justify">关键字:<span style="font-family: Calibri;">appKey appSecret token(<span style="font-family: 宋体;">令牌<span style="font-family: Calibri;">)


<p align="justify">


<p align="justify">2.SSO<span style="font-family: 宋体;">授权


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


<p align="justify">


<p align="justify">qq第三方登陆使用Oauth2.0实现,测试代码


<p align="justify">点击下面的连接


<p align="justify"><a href="https://graph.qq.com/oauth2.0/authorize?response_type=code&amp;client_id=101334262&amp;redirect_uri=http://www.qingguow.cn/sso.php" target="_blank">https://graph.qq.com/oauth2.0/authorize?response_type=code&amp;client_id=101334262&amp;redirect_uri=http://www.qingguow.cn/sso.php


<p align="justify">


<p align="justify">具体代码sso.php文件:


<div class="cnblogs_code">

    </span><span style="color: #800080;"&gt;$par</span> = 'grant_type=authorization_code'
    . '&amp;client_id='.Sso::<span style="color: #000000;"&gt;APP_ID
    </span>. '&amp;client_secret='.Sso::<span style="color: #000000;"&gt;APP_KEY
    </span>. '&amp;code='.<span style="color: #800080;"&gt;$_REQUEST</span>['code'<span style="color: #000000;"&gt;]
    </span>. '&amp;redirect_uri='.<span style="color: #008080;"&gt;urlencode</span>('http://www.qingguow.cn/sso.php'<span style="color: #000000;"&gt;);
    </span><span style="color: #800080;"&gt;$rec</span>=Sso::postUrlContents("https://graph.qq.com/oauth2.0/token",<span style="color: #800080;"&gt;$par</span><span style="color: #000000;"&gt;);
    </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #008080;"&gt;strpos</span>(<span style="color: #800080;"&gt;$rec</span>,'access_token') !== <span style="color: #0000ff;"&gt;false</span><span style="color: #000000;"&gt;) {
        </span><span style="color: #008080;"&gt;parse_str</span>(<span style="color: #800080;"&gt;$rec</span>,<span style="color: #800080;"&gt;$accessToken</span><span style="color: #000000;"&gt;);
        </span><span style="color: #800080;"&gt;$openidJson</span>=Sso::getUrlContents("https://graph.qq.com/oauth2.0/me?callback=callback&amp;access_token={<span style="color: #800080;"&gt;$accessToken</span>['access_token']}"<span style="color: #000000;"&gt;);
        </span><span style="color: #800080;"&gt;$openidJson</span>=<span style="color: #008080;"&gt;str_replace</span>("callback( ","",<span style="color: #800080;"&gt;$openidJson</span><span style="color: #000000;"&gt;);
        </span><span style="color: #800080;"&gt;$openidJson</span>=<span style="color: #008080;"&gt;str_replace</span>(");",<span style="color: #800080;"&gt;$openidJson</span><span style="color: #000000;"&gt;);
        </span><span style="color: #800080;"&gt;$openidJson</span>=json_decode(<span style="color: #800080;"&gt;$openidJson</span>,<span style="color: #0000ff;"&gt;true</span><span style="color: #000000;"&gt;);
        </span><span style="color: #008080;"&gt;header</span>("location:sso.php?action=getQQinfo&amp;openid={<span style="color: #800080;"&gt;$openidJson</span>['openid']}&amp;access_token={<span style="color: #800080;"&gt;$accessToken</span>['access_token']}"<span style="color: #000000;"&gt;);
    }
}
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;获取用户信息</span>
<span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;function</span><span style="color: #000000;"&gt; getQQinfo(){
    Sso</span>::<span style="color: #000000;"&gt;init();
    </span><span style="color: #800080;"&gt;$openid</span>=<span style="color: #800080;"&gt;$_GET</span>['openid'<span style="color: #000000;"&gt;];
    </span><span style="color: #800080;"&gt;$access_token</span>=<span style="color: #800080;"&gt;$_GET</span>['access_token'<span style="color: #000000;"&gt;];
    </span><span style="color: #800080;"&gt;$userJson</span>=Sso::getUrlContents("https://graph.qq.com/user/get_user_info?openid={<span style="color: #800080;"&gt;$openid</span>}&amp;access_token={<span style="color: #800080;"&gt;$access_token</span>}&amp;oauth_consumer_key=".Sso::<span style="color: #000000;"&gt;APP_ID);
    </span><span style="color: #800080;"&gt;$user</span>=json_decode(<span style="color: #800080;"&gt;$userJson</span>,<span style="color: #0000ff;"&gt;true</span><span style="color: #000000;"&gt;);
    </span><span style="color: #008080;"&gt;print_r</span>(<span style="color: #800080;"&gt;$user</span><span style="color: #000000;"&gt;);
}
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;get方式请求数据</span>
<span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;function</span> getUrlContents(<span style="color: #800080;"&gt;$url</span><span style="color: #000000;"&gt;){
    </span><span style="color: #800080;"&gt;$ch</span> =<span style="color: #000000;"&gt; curl_init();
    curl_setopt(</span><span style="color: #800080;"&gt;$ch</span>,CURLOPT_SSL_VERIFYPEER,<span style="color: #0000ff;"&gt;FALSE</span><span style="color: #000000;"&gt;);
    curl_setopt(</span><span style="color: #800080;"&gt;$ch</span>,CURLOPT_HEADER,<span style="color: #0000ff;"&gt;false</span><span style="color: #000000;"&gt;);
    curl_setopt(</span><span style="color: #800080;"&gt;$ch</span>,CURLOPT_FOLLOWLOCATION,<span style="color: #0000ff;"&gt;true</span><span style="color: #000000;"&gt;);
    curl_setopt(</span><span style="color: #800080;"&gt;$ch</span>,CURLOPT_URL,<span style="color: #800080;"&gt;$url</span><span style="color: #000000;"&gt;);
    curl_setopt(</span><span style="color: #800080;"&gt;$ch</span>,CURLOPT_REFERER,CURLOPT_RETURNTRANSFER,<span style="color: #0000ff;"&gt;TRUE</span><span style="color: #000000;"&gt;);
    </span><span style="color: #800080;"&gt;$result</span> = curl_exec(<span style="color: #800080;"&gt;$ch</span><span style="color: #000000;"&gt;);
    curl_close(</span><span style="color: #800080;"&gt;$ch</span><span style="color: #000000;"&gt;);
    </span><span style="color: #0000ff;"&gt;return</span> <span style="color: #800080;"&gt;$result</span><span style="color: #000000;"&gt;;
}
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;post请求数据</span>
<span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;function</span> postUrlContents(<span style="color: #800080;"&gt;$url</span>,<span style="color: #800080;"&gt;$data</span> = <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;){
    </span><span style="color: #800080;"&gt;$curl</span> =<span style="color: #000000;"&gt; curl_init();
    curl_setopt(</span><span style="color: #800080;"&gt;$curl</span>,<span style="color: #800080;"&gt;$url</span><span style="color: #000000;"&gt;);
    curl_setopt(</span><span style="color: #800080;"&gt;$curl</span>,<span style="color: #0000ff;"&gt;FALSE</span><span style="color: #000000;"&gt;);
    curl_setopt(</span><span style="color: #800080;"&gt;$curl</span>,CURLOPT_SSL_VERIFYHOST,<span style="color: #0000ff;"&gt;FALSE</span><span style="color: #000000;"&gt;);
    </span><span style="color: #0000ff;"&gt;if</span> (!<span style="color: #0000ff;"&gt;empty</span>(<span style="color: #800080;"&gt;$data</span><span style="color: #000000;"&gt;)){
    curl_setopt(</span><span style="color: #800080;"&gt;$curl</span>,CURLOPT_POST,1<span style="color: #000000;"&gt;);
    curl_setopt(</span><span style="color: #800080;"&gt;$curl</span>,CURLOPT_POSTFIELDS,<span style="color: #800080;"&gt;$data</span><span style="color: #000000;"&gt;);
    }
    curl_setopt(</span><span style="color: #800080;"&gt;$curl</span>,1<span style="color: #000000;"&gt;);
    </span><span style="color: #800080;"&gt;$output</span> = curl_exec(<span style="color: #800080;"&gt;$curl</span><span style="color: #000000;"&gt;);
    curl_close(</span><span style="color: #800080;"&gt;$curl</span><span style="color: #000000;"&gt;);
    </span><span style="color: #0000ff;"&gt;return</span> <span style="color: #800080;"&gt;$output</span><span style="color: #000000;"&gt;;
}

}
Sso::main();

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读