新浪微博的authorize接口怎么获取返回的code值?

发布于 2022-09-04 05:31:08 字数 441 浏览 19 评论 0

示例
//请求
https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code

//同意授权后会重定向
http://www.example.com/response&code=CODE

上段是新浪微博给的示例,浏览器打开示例中请求那样的地址,会打开输入新浪微博帐号密码的网页,输入帐号密码之后,网页就会跳转到示例中同意授权后会重定向那样的网址,网址中code=后边的值就是需要获取的

我尝试用okhttp来发送这个请求,但是返回的结果是授权页面,用浏览器打开,不知道怎么才能用JAVA获取到重定向的地址

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

窗影残 2022-09-11 05:31:08
  • 第一个地址中的小写 code 就是 字符串 'code'

  • 第二个地址中的大写 CODE 代指 一长串随机code值

 //微博登陆按钮
$(document).on('click','._weiboLogin',function(){
    return window.open('{{ weiboCallBack }}', 'oauth2Login_weibo' ,'height=525,width=585, toolbar=no, menubar=no, scrollbars=no, status=no, location=yes, resizable=yes');
});

其中 {{weiboCallBack}} 就是第一个地址,然后这个授权成功后,会自动跳转到第二个地址

第二个地址是你自己当前网站的地址,需要自己开发写代码,如下:[注意看注释]

/**
     * 微博登陆
     */
    public function weibologincallbackAction()
    {
        $o = $this->weiboOauth;

        if (isset($_REQUEST['code'])) {
            $keys = array();
            //注意这里获取请求中的code
            $keys['code'] = $_REQUEST['code'];
            $keys['redirect_uri'] = $this->config->thirdpart['weibo']['WB_CALLBACK_URL'];
            try {
                $token = $o->getAccessToken('code', $keys);
            } catch (OAuthException $e) {
            }
        }

        if ($token) {
            //登陆
            $user = SessionController::registerUser($token['uid'],Users::USER_SOURCE_WEIBO);
            $this->_registerSession($user);
            $this->setSession('token',$token);
            $this->setSession('tokentype',Users::USER_SOURCE_WEIBO);
            setcookie('weibojs_' . $o->client_id, http_build_query($token));
        } else {
            //授权失败。
        }

    }

最好下载一个相应语言的SDK,链接:

http://open.weibo.com/wiki/SDK

其它相关阅读:
阮一峰 理解OAuth 2.0
OAuth 2.0官网

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文