STM32授权登录程序--新浪微博SDK下载

优采云 发布时间: 2021-07-11 06:25

  STM32授权登录程序--新浪微博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和定义方法。 (个人比较喜欢微信的方式)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线