如何获取微信开放平台的openid?

请问如何获取微信开放平台的openid?

使用https://open.weixin.qq.com/connect/oauth2/authorize这个接口拿到了公众号的openid

但是将公众号appid替换了开放平台appid却提示redirect_uri 参数错误(公众号与开放平台已绑定)

1、是因为公众号与开放平台获取openid的接口不一样?
2、还是应为开放平台的配置不同?(只在公众号中看到了配置redirect_uri的地方,在开放平台没有看到)
3、还是不能用这种方法获取?(点一个链接发请求到微信服务器,微信返回code到我的服务器,我通过code换得openid)(记得之前一直是这样获取开放平台的openid的)
4、网上找到的资料都是公众号拿openid的,没找到开放平台拿openid的

阅读 7.4k
2 个回答

公众号与开放平台的openid不一样。
想拿开放平台的openid,先拿code, 然后拿code去请求access_token,就会返回openid

//获取code
public function indexAction(){

//1 第一步:用户同意授权,获取code

    $redirect_uri=urlencode('http:qqqqq/wx/openid');//code 送去的地方要和回调地址一个域名
    $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid="自己的appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect";

    header('location:'.$url);
}
//生成openid
public function openidAction(){
 

    //2 第二步:通过code换取网页授权access_token
    $code                          = $_GET['code'];

    $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".自己的appid."&secret=".自己的appsecret."&code=".$code."&grant_type=authorization_code";

//3 第三步:拉取用户openid

    $res=$this->httpCurlAction($url,'get');
    var_dump($res);die;
    $openid=$res['openid'];
    var_export($openid);
}

public function httpCurlAction($url,$type='get',$res='json',$arr=''){
    //初始化curl
    $ch=curl_init();
    //设置curl的参数
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    if($type == 'post'){
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
    }
    //采集
    $output=curl_exec($ch);
    //关闭
    //    curl_close($ch);
    if($res=='json'){
        //        echo curl_errno($ch);
        if(curl_errno($ch)){
            //请求失败 返回错误信息
            return curl_errno($ch);
        }else{
            return json_decode($output,true);
        }

    }
    var_dump($output);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题