async_wechat/official_account/
user.rs1use crate::OfficialAccount;
2
3use super::core::UserInfoResponse;
4
5impl OfficialAccount {
6 pub async fn get_user_by_open_id(
7 &self,
8 open_id: &str,
9 ) -> Result<UserInfoResponse, Box<dyn std::error::Error>> {
10 let token = self.token().await?;
11
12 let url = format!(
13 "https://api.weixin.qq.com/cgi-bin/user/info?access_token={}&openid={}&lang=zh_CN",
14 token, open_id
15 );
16 let response = match self.client.get(url).send().await {
17 Ok(r) => r,
18 Err(e) => {
19 println!("json err: {:#?}", e);
20 return Err(e.into());
21 }
22 };
23
24 let result = match response.json::<UserInfoResponse>().await {
25 Ok(r) => r,
26 Err(e) => {
27 println!("json err: {:#?}", e);
28 return Err(e.into());
29 }
30 };
31
32 Ok(result)
33 }
34}