GithubHelp home page GithubHelp logo

yurunsoft / yurunoauthlogin Goto Github PK

View Code? Open in Web Editor NEW
419.0 19.0 110.0 328 KB

PHP 第三方登录授权 SDK,集成了QQ、微信、微博、Github等常用接口。支持 php-fpm 和 Swoole,所有框架通用。QQ群:17916227

License: MIT License

PHP 71.73% HTML 28.27%
php oauth2 oauth-client qqlogin weixinlogin swoole coroutine

yurunoauthlogin's Introduction

YurunOAuthLogin

Latest Version IMI Doc IMI License

介绍

YurunOAuthLogin 是一个 PHP 第三方登录授权 SDK,集成了 QQ、微信、微博、GitHub 等常用接口。

无框架依赖,支持所有框架,支持 Swoole 协程环境。

我们有完善的在线技术文档:http://doc.yurunsoft.com/YurunOAuthLogin

API 文档:https://apidoc.gitee.com/yurunsoft/YurunOAuthLogin

宇润PHP全家桶群:17916227 点击加群,如有问题会有人解答和修复。

程序员日常划水群:74401592 点击加群

大家在开发中肯定会对接各种各样的第三方平台,我个人精力有限,欢迎各位来提交 PR (GitHub),一起完善它,让它能够支持更多的平台,更加好用。

支持的登录平台

  • QQ、QQ 小程序
  • 微信网页扫码、微信公众号、微信小程序
  • 支付宝网页、支付宝 APP、支付宝小程序
  • 微博
  • 百度
  • GitHub
  • Gitee
  • Coding
  • 开源**(OSChina)
  • CSDN
  • GitLab
  • 飞书
  • 钉钉
  • 企业微信

后续将不断添加新的平台支持,也欢迎你来提交PR,一起完善!

安装

在您的 composer.json 中加入配置:

PHP >= 5.5.0

{
    "require": {
        "yurunsoft/yurun-oauth-login": "~3.0"
    }
}

PHP < 5.5.0

{
    "require": {
        "yurunsoft/yurun-oauth-login": "~2.0"
    }
}

3.x 版本支持 PHP >= 5.5,持续迭代维护中

2.x 版本支持 PHP >= 5.4,支持长期 BUG 维护,保证稳定可用,停止功能性更新

代码实例

自 v1.2 起所有方法统一参数调用,如果需要额外参数的可使用对象属性赋值,具体参考 test 目录下的测试代码。

下面代码以 QQ 接口举例,完全可以把 QQ 字样改为其它任意接口字样使用。

实例化

$qqOAuth = new \Yurun\OAuthLogin\QQ\OAuth2('appid', 'appkey', 'callbackUrl');

登录

$url = $qqOAuth->getAuthUrl();
$_SESSION['YURUN_QQ_STATE'] = $qqOAuth->state;
header('location:' . $url);

回调处理

// 获取accessToken
$accessToken = $qqOAuth->getAccessToken($_SESSION['YURUN_QQ_STATE']);

// 调用过getAccessToken方法后也可这么获取
// $accessToken = $qqOAuth->accessToken;
// 这是getAccessToken的api请求返回结果
// $result = $qqOAuth->result;

// 用户资料
$userInfo = $qqOAuth->getUserInfo();

// 这是getAccessToken的api请求返回结果
// $result = $qqOAuth->result;

// 用户唯一标识
$openid = $qqOAuth->openid;

解决第三方登录只能设置一个回调域名的问题

// 解决只能设置一个回调域名的问题,下面地址需要改成你项目中的地址,可以参考test/QQ/loginAgent.php写法
$qqOAuth->loginAgentUrl = 'http://localhost/test/QQ/loginAgent.php';

$url = $qqOAuth->getAuthUrl();
$_SESSION['YURUN_QQ_STATE'] = $qqOAuth->state;
header('location:' . $url);

Swoole 协程环境支持

\Yurun\Util\YurunHttp::setDefaultHandler('Yurun\Util\YurunHttp\Handler\Swoole');

特别鸣谢

捐赠

开源不求盈利,多少都是心意,生活不易,随缘随缘……

yurunoauthlogin's People

Contributors

gchehe avatar sy-records avatar wei98k avatar yurunsoft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yurunoauthlogin's Issues

getOpenID方法这里有个问题

我这里通过getOpenID方法获取unionid,isUseUnionID设为true,openidMode设为2,请求接口oauth2.0/me使用参数unionid为2,但接口并不是每次返回都有unionid,如果改成unionid为1,自测每次都返回unionid

qq获取openid及unionid. api对接有误

关于unionid的官方文档:
https://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D

文档中返回的异常类似于:

callback( {
  "error": 100048,
  "error_description": "CompanyID not set"
} );

而程序中 /QQ/OAuth2.php中判断使用的是code,应该用error

$this->result = $this->http->get($this->getUrl('oauth2.0/me', $params))->jsonp(true);
		
		// Log::debug('获取qq openid unionid', ['params' => $params, 'res' => $this->result]);
		if(isset($this->result['code']) && 0 != $this->result['code'])
		{
			throw new ApiException($this->result['msg'], $this->result['code']);
		}

Class 'Yurun\OAuthLogin\Weixin\OAuth2' not found

在phpstorm中,在loginPC.php文件的类名上按ctrl+b,能自动跳转到类定义处,说明autoload是正常的,但一运行就报错:Class 'Yurun\OAuthLogin\Weixin\OAuth2' not found。

排查了很久,仍然报错。请问如何解决?谢谢!

该发包了...

16天前的提交挺有用的,可以发一个更新到生产里面

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.