Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Does this support Oauth already? #1

Closed
phoenixg opened this issue Mar 18, 2015 · 14 comments
Closed

Does this support Oauth already? #1

phoenixg opened this issue Mar 18, 2015 · 14 comments

Comments

@phoenixg
Copy link

已经支持oauth打开页面获取用户信息了吗?

@overtrue
Copy link
Collaborator

没有,这块还未完成

@overtrue
Copy link
Collaborator

sorry 已经支持了(https://github.com/overtrue/wechat/wiki/%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83 ),我看错了,我以为是网页jssdk

@phoenixg
Copy link
Author

弱弱问下,为什么我这么写不行呢

<?php
use Overtrue\Wechat\Wechat;

class HomeController extends BaseController {
        public function showWelcome()
        {   
                $options = [ 
                    'appId'          => 'wx7dc3**267**3310',
                    'secret'         => '7e11f4e5c767**432fb***5a6',
                    'token'          => 'Your token',
                    'encodingAESKey' => 'Your encoding AES Key' // optional
                ];  
                $to = 'http://wx.domain.com/tmp/laravel42wxsocketbtn/public/index.php/oauth';

                $wechat = Wechat::make($options);
                $wechat->auth->redirect($to, $state = 'STATE', $scope = 'snsapi_base');

        }   

}

微信里打开$to这个地址后,会不停地刷新页面
还有, token 和 encodingAESKey对于网页授权来说不是必须要填写的吧?也就是不需要和服务器做接口对接吧?

@overtrue
Copy link
Collaborator

encodingAESKey是可选的,基本不用管,token也是,只是在服务器验证的时候需要用,你的auth路由指到哪个控制器的?代码是怎么样的?

因为看你好像用的是laravel, 所以这里建议你改一下(如果不是请忽略):

return Redirect::to($wechat->auth->url($to, $state = 'STATE', $scope = 'snsapi_base'));

另外就是你不需要每次都跳转啊?你应该是授权后取得open id 后放到session中嘛,session里没有的时候才需要跳转

@overtrue overtrue reopened this Mar 18, 2015
@phoenixg
Copy link
Author

你好,我用的是laravel。 为什么是改成return一个字符串呢? 这样我打开页面就是打印出url而已,而不是出现授权页面或者直接授权通过获得用户信息

我$to 写的是:
$to = 'http://wx.domain.com/tmp/laravel42wxsocketbtn/public/index.php/oauth';

路由写的是:
Route::get('oauth', array('as' => 'oauth', 'uses' => 'HomeController@showWelcome'));

还有, token 和 encodingAESKey对于网页授权来说是不是必须的?

@overtrue
Copy link
Collaborator

@phoenixg 我写错了,上面的评论我已经更新应该是返回 Redirect::to, 另外就是你没有加判断(已经授权过就保存open_id到session就直接进入首页不需要再判断了):

public function showWelcome()
{   
        $options = [ 
            'appId'          => 'wx7dc3**267**3310',
            'secret'         => '7e11f4e5c767**432fb***5a6',
            'token'          => 'Your token',
            'encodingAESKey' => 'Your encoding AES Key' // optional
        ];  

        $to = 'http://wx.domain.com/tmp/laravel42wxsocketbtn/public/index.php/oauth';

        $wechat = Wechat::make($options);

        // 如果已经授权
        if ($wechat->auth->authorized()) {
            $user = $wechat->auth->user();// 获取已经登录后用户信息
            Session::set('logged_open_id', $user['open_id']);

            return Redirect::to(你的授权后的页面);// 这里跳转到授权后可以访问的页面,比如首页
        } else {
            $wechat->auth->redirect($to);
        }
}   

@phoenixg
Copy link
Author

现在遇到一个问题是var_dump($wechat->auth->authorized()); 返回 bool(false),可能是什么原因?

@overtrue
Copy link
Collaborator

@phoenixg

  1. 显示微信授权页面(一个绿色的头部+一个按钮)的页面
  2. 用户点击后,跳转到你的 $to 页,并且带上用户信息
  3. 你在 $to 的代码里检查 $wechat->auth->authorized() 如果是 true,就是用户点击了同意按钮,false 就是没同意。

@overtrue
Copy link
Collaborator

@phoenixg sorry 文档写错了,redirect的参数 $state 与 $scope 错位了

@phoenixg
Copy link
Author

调整了参数的位置,可是现在遇到一个问题var_dump($wechat->auth->authorized()); 返回 bool(false),可能是什么原因?另外我也没有看到绿色的授权页面。

还有, token 和 encodingAESKey对于网页授权来说是不是必须的?

@overtrue
Copy link
Collaborator

不是必须的, 但是建议你填写上。

@phoenixg
Copy link
Author

我按照你的代码写了,但是为什么不出现授权页面呢? 而且 var_dump($wechat->auth->authorized()); 出来返回的是 false

@overtrue
Copy link
Collaborator

你没有看到绿色的那个授权页?

@overtrue
Copy link
Collaborator

@phoenixg 我今天有更新,麻烦再试一下?

overtrue pushed a commit that referenced this issue Oct 16, 2015
overtrue pushed a commit that referenced this issue Nov 10, 2015
skyfister added a commit to skyfister/wechat that referenced this issue Jun 22, 2016
将变量$lastPermission默认值设为array(),否则刷新accesstoken的时候在219行array_merge()函数那里会报错:array_merge(): Argument w7corp#1 is not an array
mingyoung added a commit that referenced this issue Mar 21, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants