STM32授权登录程序--新浪微博SDK下载
优采云 发布时间: 2021-07-11 06:25STM32授权登录程序--新浪微博SDK下载
下面提到的三种授权登录是单独嵌入的,不共享sdk或友盟。
一、download sdk 地址
1.妹妹微博新浪微博SDK下载
2.SDK 下载
3.微信微信SDK
二、代码编写
如何嵌入导入库和配置密钥,更不用说那些了。
在阿普尔盖特
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
(1)新浪微博
先用新浪微博提供的对象来调用
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
WBAuthorizeRequest *request = [WBAuthorizeRequest 请求];
request.redirectURI = kRedirectURI;
request.scope = @"all";
request.userInfo = @{@"myKey": @"myValue"};
[微博SDK sendRequest:request];
kRedirectURL 是你申请新浪微博时填写的url
当我们授权成功后,我们会在这个delegate中返回token和openId等信息
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
//调用成功后,会在该方法中获取token、openId等信息
-(void)didReceiveWeiboResponse:(WBBaseResponse *)response
{
APP_DELEGATE.loginVC = nil;
if ([response isKindOfClass:WBAuthorizeResponse.class])
{
if ((int)response.statusCode == 0)
{
NSString *toke = [(WBAuthorizeResponse *)response userID];
NSString *openId = [(WBAuthorizeResponse *)response accessToken];
[WBHttpRequest requestWithAccessToken:toke url:@"https://api.weibo.com/2/users/show.json" httpMethod:@"GET" params:[NSDictionary dictionaryWithObject:openId forKey:@"uid"] delegate:(id)self withTag:@"hello_xixi"];
}
}
}
那么当我们使用token和openId的时候,就可以得到一些基本的信息了。
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
还有一些其他的delegate方法来判断,基本上看名字就知道是怎么回事了。
[objc] view plaincopy 在CODE上查看代码切片,导出我的代码切片
新浪微博结束
--------------------------------------------我分裂了行--------------------------------------------
(2)QQ
第一步是使用提供的对象调用QQ客户端
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
//这个key有很多,可以根据需要添加到数组中
NSArray* 权限 = [NSArray arrayWithObjects:
kOPEN_PERMISSION_GET_USER_INFO,
kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,
零零];
_tencentOAuth = [[TencentOAuth alloc] initWithAppId:qA*敏*感*词*ey andDelegate:(id)self];
[_tencentOAuth 授权:权限];
qA*敏*感*词*ey 是申请时提供的密钥
之后,token和openId会在delegate中获取
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
然后调用成功后会放回到下面的委托方法中
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
-(void)getUserInfoResponse:(APIResponse *)response
{
NSLog(@"%@",response);
NSLog(@"%@",response.jsonResponse);
//这里的响应有User Base Info
}
还列出了其他一些相关的方法。
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
--------------------------------------------我分裂了行--------------------------------------------
(3)微信
微信需要获取token,openId和新浪微博有点不同。它首先获取一个code,然后按照这个coed获取token和openId
首先调用微信客户端
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
SendAuthReq *req = [[SendAuthReq alloc] init];
req.scope = @"snsapi_userinfo,snsapi_base"; // 同根据自己的需要
req.state = wAppState;
req.openID = wA*敏*感*词*ey;
[WXApi sendReq:req];
授权回来后,在代理方法中获取code
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
需要添加类型判断,因为共享也会回调这个方法,所以需要判断对象类型
然后拿到code后,我们就可以根据提供的url获取token和openId
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
-(void)getAccessToken:(NSString *)code
{
NSString *url =[NSString stringWithFormat:@"@&secret=%@&code=%@&grant_type=authorization_code",wA*敏*感*词*ey,wAppSecret,code];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *zoneUrl = [NSURL URLWithString:url];
NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];
NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_main_queue(), ^{
if (data) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@",dic);
NSString *token = [dic objectForKey:@"access_token"];
NSString *openId = [dic objectForKey:@"openid"];
[self getUserInfo:token andOpenId:openId];
}
});
});
}
通过 token 和 openId,您还可以获取 User Base Info
[objc] view plaincopy 在CODE上查看代码片段,导出我的代码片段
-(void) getUserInfo:(NSString *)tokenArg andOpenId:(NSString *)openIdArg
{
NSString *url =[NSString stringWithFormat:@"@&openid=%@",self.access_token,self.openid];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *zoneUrl = [NSURL URLWithString:url];
NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];
NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_main_queue(), ^{
if (data)
{
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@",dic);
}
});
});
}
微信端
三、Summary
1.类似于新浪微博的SDK写法,返回授权后都能拿到token和openId
而微信在获取token和openId之前必须先获取code。
2.和新浪微博提供了数据封装的代理方法和对象,而微信提供了一个URL供开发者自己拼接URL和定义方法。 (个人比较喜欢微信的方式)