‘壹’ OAuth2.0配合php的话主要用来做什么,有没有例子
用在登录跟支付方面比较多
登录的比如:qq、微信、微博、其他第三方社区等的一键登录
支付的比如:支付宝、微信扫描支付、贝宝支付等的支付接口
他们各自平台都有sdk的下载,可以随便找一个下载下来参考
‘贰’ 用php怎么实现oauth2
我觉得如果是要自己写一个oauth2,那么首先需要理解oauth的原理,推荐
理解OAuth 2.0
如果是要找一个已经开源的oauth2直接拿来用,那么github上就有很多了。这些都是我在后盾人看教程学的,希望能帮到你
‘叁’ PHP通过oauth2.0获得微信授权后用户的信息, 之后该怎么设计
纠正一下,用户是openid。
一般获取微信授权的用户信息主要的作用是免去注册和登陆过程,并且和用户的微信联系在一起,所以,如果还有其他用户注册的,建议是做微信绑定,这样微信用户只是多一个途径,本质上还是普通的用户。
一般在获取之前会先把当前需要授权的url存起来,然后跳转微信授权,获取到用户信息后,存下用户信息,然后再跳转回之前的url。
‘肆’ 如何运用 bshaffer/oauth2-server-php 开发
还是把代码贴出来吧. 程序是顺序执行的.
你的情况根据描述可能是第一次循环没执行完,就开始了
第二次循环,然后第三次循环.. 你可以把数量设置低一些,一次写3W条试试,
一次写1W条试试. 或者先循环一次,break,看看有没有问题,然后循环2次,
‘伍’ 微信OAuth2.0授权回调页面域名设置问题怎么解决
当下的解决方案是引入一个新的非常简单的应用来作为微信授权的代理服务,可以这么做:
1. 把公众号的网页授权接口域名设置成另外一个子域名,如proxy.your.com;
2. 然后把php_weixin_proxy里面的index.php部署到proxy.your.com
php_weixin_proxy下的index.php是一个很简单的php文件,你可以直接查看源码了解它的实现方式。因为当前项目的环境,我采用php来完成这个代理服务实现,实际上,你完全可以用任意平台语言来完成类似的功能。
当其它业务需要发起微信授权时,将授权请求先发到proxy.your.com,然后proxy.your.com会把这个请求转发到微信;
当用户同意授权后,proxy.your.com会收到微信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的业务。
唯一的区别在于,在不使用proxy.your.com的时候,你从应用发起微信授权的链接应该是这样的:
https://open.weixin.qq.com/connect/qrconnect?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2F&response_type=code&scope=snsapi_login&state=584bc87e11ff37492#wechat_redirect
用了proxy.your.com之后,这个授权链接就应该是这样的:
http://proxy.your.com/?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2Flogin%2Fnotify&response_type=code&scope=snsapi_base&state=584bc87e11ff37492&device=pc
后面这个链接跟上面的比:
1. 后面的链接中的host变成了proxy.your.com,也就是代理的授权回调域名;
2. 后面的多了一个device参数,这个是必要的。因为微信pc端跟移动端的授权地址是不一样的,而后面的链接是发送个proxy.your.com的,所以需要多加个参数告诉它在转发给授权申请给微信的时候,是用PC端还是移动端的授权地址。
‘陆’ 如何使用php中oauth开发包及oauth
windows的下载地址:http://pecl.php.net/package/oauth/1.2.3/windows
需要此文件php_oauth.dll
放入/bin/php[version]/ext
您需要更改 php.ini 加载 oauth (动态扩展)
extension=php_oauth.dll
linux的下载地址:http://pecl.php.net/get/oauth-1.2.3.tgz
tar -zxf oauth-1.2.3.tgz && cd oauth-1.2.3
/usr/local/php5/bin/phpize
/configure --with-php-config=/usr/local/php5/bin/php-config
make && make install
vi php.ini #修改php配置文件加载oauth扩展
添加extension="oauth.so"
使用篇:
$req_url = 'https://oauth.lvtao.net/oauth/request_token';
$authurl = 'https://www.j66.org/oauth';
$acc_url = 'https://oauth.lvtao.net/oauth/access_token';
$api_url = 'https://oauth.lvtao.net/api/0.1';
$conskey = 'your_consumer_key';
$conssec = 'your_consumer_secret';
session_start();
// In state=1 the next request should include an oauth_token.
// If it doesn't go back to 0
if(!isset($_GET['oauth_token']) && $_SESSION['state']==1) $_SESSION['state'] = 0;
try {
$oauth = new OAuth($conskey,$conssec,OAUTH_SIG_METHOD_HmacSHA1,OAUTH_AUTH_TYPE_URI);
$oauth->enableDebug();
if(!isset($_GET['oauth_token']) && !$_SESSION['state']) {
$request_token_info = $oauth->getRequestToken($req_url);
$_SESSION['secret'] = $request_token_info['oauth_token_secret'];
$_SESSION['state'] = 1;
header('Location: '.$authurl.'?oauth_token='.$request_token_info['oauth_token']);
exit;
} else if($_SESSION['state']==1) {
$oauth->setToken($_GET['oauth_token'],$_SESSION['secret']);
$access_token_info = $oauth->getAccessToken($acc_url);
$_SESSION['state'] = 2;
$_SESSION['token'] = $access_token_info['oauth_token'];
$_SESSION['secret'] = $access_token_info['oauth_token_secret'];
}
$oauth->setToken($_SESSION['token'],$_SESSION['secret']);
$oauth->fetch("$api_url/user.json");
$json = json_decode($oauth->getLastResponse());
print_r($json);
} catch(OAuthException $E) {
print_r($E);
}
‘柒’ 新浪微博桌面登录验证时出现OAuth2.0,怎么解决
具体步骤如下:
1、打开微博开放平台主页,登录微博账号。
‘捌’ 有关 php 新浪微博同步登陆 oAuth 授权的问题
php 有开发包的
getRequestToken() 方法获取临时oauth_token
在callback函数中使用 getAccessToken 获取正式token,保存到数据库,以后用正式token就可以用新浪微博账号登录了
‘玖’ spring security oauth2 搭建资源服务器,如何配置受保护资源,我想配置order路径为保护资源,不起作用
我做了一个demo,你可以看下,有不懂的再问吧,
网页链接
‘拾’ php oauth2.0服务 怎么调用
fputs($fp, "GET / HTTP/1.1\r\n");
fputs($fp, "Host: $url\r\n");
fputs($fp, "Accept: */*\r\n");
fputs($fp, "Referer: http://$url/\r\n");
fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n");
fputs($fp, "Connection: Close\r\n\r\n");
}
while ($str = fread($fp, 4096))
$data .= $str;
fclose($fp);
return $data;
}
?>