@@ -24,13 +24,13 @@ public override async Task<User> GetUserByOAuthAsync(string type, string code, s
2424 var accessToken = await GetAccessTokenAsync ( code , state ) ;
2525 var userInfo = await GetUserInfoAsync ( accessToken ) ;
2626
27- return await UserService . CreateUserAsync ( userInfo . Email , type , userInfo . Id , userInfo . Name , userInfo . Avatar , userInfo . Email ) ;
27+ return await UserService . CreateUserAsync ( userInfo . Name , type , userInfo . Id , userInfo . Name , userInfo . Avatar , userInfo . Email ) ;
2828 }
2929
3030 public override async Task < AccessTokenBase > GetAccessTokenAsync ( string code , string state )
3131 {
3232 var param = BuildAccessTokenParams ( code , state ) ;
33- Options . Value . AccessTokenUrl = $ "{ Options . Value . AccessTokenUrl } ?{ param . ToQueryStringWithEncode ( ) } ";
33+ Options . Value . AccessTokenUrl = $ "{ Options . Value . AccessTokenUrl } ?{ param . ToQueryString ( ) } ";
3434
3535 using var client = HttpClient . CreateClient ( ) ;
3636 var response = await client . GetStringAsync ( Options . Value . AccessTokenUrl ) ;
@@ -47,12 +47,17 @@ public override async Task<QQUserInfo> GetUserInfoAsync(AccessTokenBase accessTo
4747 {
4848 using var client = HttpClient . CreateClient ( ) ;
4949
50- var openIdResponse = await client . GetStringAsync ( $ "{ Options . Value . OpenIdUrl } ?access_token={ accessToken . AccessToken } ") ;
51-
50+ var openIdResponse = await client . GetStringAsync ( $ "{ Options . Value . OpenIdUrl } ?access_token={ accessToken . AccessToken } &fmt=json") ;
51+ var openId = openIdResponse . DeserializeToObject < QQOpenId > ( ) . OpenId ;
52+
53+ var param = BuildUserInfoParams ( accessToken . AccessToken , openId ) ;
54+ Options . Value . UserInfoUrl = $ "{ Options . Value . UserInfoUrl } ?{ param . ToQueryString ( ) } ";
5255
5356 var response = await client . GetStringAsync ( Options . Value . UserInfoUrl ) ;
5457
5558 var userInfo = response . DeserializeToObject < QQUserInfo > ( ) ;
59+ userInfo . Id = openId ;
60+
5661 return userInfo ;
5762 }
5863
@@ -80,5 +85,15 @@ protected Dictionary<string, string> BuildAccessTokenParams(string code, string
8085 [ "state" ] = state
8186 } ;
8287 }
88+
89+ protected Dictionary < string , string > BuildUserInfoParams ( string accessToken , string openId )
90+ {
91+ return new Dictionary < string , string > ( )
92+ {
93+ [ "access_token" ] = accessToken ,
94+ [ "oauth_consumer_key" ] = Options . Value . ClientId ,
95+ [ "openid" ] = openId ,
96+ } ;
97+ }
8398 }
8499}
0 commit comments