@@ -67,6 +67,8 @@ - (void)handleMethodCall:(FlutterMethodCall *)call
67
67
result ([NSNumber numberWithBool: [TencentOAuth iphoneTIMInstalled ]]);
68
68
} else if ([@" login" isEqualToString: call.method]) {
69
69
[self login: call result: result];
70
+ } else if ([@" loginServerSide" isEqualToString: call.method]) {
71
+ [self loginServerSide: call result: result];
70
72
} else if ([@" logout" isEqualToString: call.method]) {
71
73
[self logout: call result: result];
72
74
} else if ([@" shareMood" isEqualToString: call.method]) {
@@ -88,6 +90,17 @@ - (void)login:(FlutterMethodCall *)call result:(FlutterResult)result {
88
90
if (_oauth != nil ) {
89
91
NSString *scope = call.arguments [@" scope" ];
90
92
NSArray *permissions = [scope componentsSeparatedByString: @" ," ];
93
+ _oauth.authMode = kAuthModeClientSideToken ;
94
+ [_oauth authorize: permissions];
95
+ }
96
+ result (nil );
97
+ }
98
+
99
+ - (void )loginServerSide : (FlutterMethodCall *)call result : (FlutterResult)result {
100
+ if (_oauth != nil ) {
101
+ NSString *scope = call.arguments [@" scope" ];
102
+ NSArray *permissions = [scope componentsSeparatedByString: @" ," ];
103
+ _oauth.authMode = kAuthModeServerSideCode ;
91
104
[_oauth authorize: permissions];
92
105
}
93
106
result (nil );
@@ -278,6 +291,11 @@ - (void)tencentDidLogin {
278
291
if (_oauth.accessToken != nil && _oauth.accessToken .length > 0 ) {
279
292
NSString *openId = _oauth.openId ;
280
293
NSString *accessToken = _oauth.accessToken ;
294
+ if (_oauth.authMode == kAuthModeServerSideCode ) {
295
+ // 将 code 的值赋给 accessToken, 避免字段功能混淆
296
+ // 同时官方文档也有说明通过此接口获取的 code 实际上就是 accessToken
297
+ accessToken = [_oauth getServerSideCode ];
298
+ }
281
299
long long expiresIn =
282
300
ceil (_oauth.expirationDate .timeIntervalSinceNow ); // 向上取整
283
301
long long createAt = [[NSDate date ] timeIntervalSince1970 ] * 1000.0 ;
0 commit comments