手把手的教你使用友盟实现新浪微博第三方登陆

1、打开友盟官网

http://www.umeng.com/

注册开发者账号


2、添加新应用

打开

http://mobile.umeng.com/apps/new

这里很简单的,你按照要求设置然后点击“提交并获取AppKey”


3、我这里是通过CocoaPods来安装友盟第三方库的

还没安装的建议你安装,github上面的很多开源库都是基于CocoaPods的,掌握这个事半功倍。

在Pods项目下面找到Prodfile文件,打开并输入:pod 'UMengSocial'

然后点击Install

弹出如下提示,请点击Yes


打开后再在AppDelegate中导入

#import"UMSocialSinaSSOHandler.h"

输入UM可能没有提示

在Build Settings 下面找到User Header Search Paths 输入红框中的内容

并且选择recursive,这样就能模糊查找该目录下面的所有.h文件了

4、登陆新浪微博开发者中心

创建移动应用

注意下图的Apple ID 可以随便填写,因为你的app还没有上线是没有Apple ID的

因为你暂时这是用来测试可以不用提交审核。

然后点击我的应用,点击进入你刚才添加的应用对其进行管理

授权回调页、取消授权回调页都输入

http://sns.whalecloud.com/sina2/callback 

添加测试账号

5、配置相关信息

a、大部分社交平台SDK不支持bitcode,请将bitcode修改为NO

不修改就会报这个错误:

clang: error: linker command failed with exit code 1 (use -v to see invocation)

b、添加Scheme白名单。

问题描述:在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。

下面的配置信息是给微信、微博、qq、支付宝添加白名单,请将其加入到info.plist

不知道为什么这个粘贴后格式就不对了,所以就放张图片了,或者你们百度搜索下

c、Other Linker Flags 请添加-all_load

不然就会报着错误:

[NSConcreteMutableData wbsdk_base64EncodedString]: unrecognized selector sent to instance 0x12f6f4f80

d、info.plist文件需加入如下代码

NSAppTransportSecurity

NSAllowsArbitraryLoads


e、配置URL Schemes为:wb+AppKey

6、代码实现新浪微博登陆

打开APPDelegate导入如下:

#import"UMSocialSinaSSOHandler.h"

#import"UMSocial.h"

在- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 中写入如下代码:

```

[UMSocialDatasetAppKey:@"友盟创建应用的AppKey"];

//设置新浪微博AppId、appSecret,分享url

[UMSocialSinaSSOHandler

openNewSinaSSOWithAppKey:@"微博创建应用的AppKey"// sina ID

secret:@"微博创建应用的secret"// sina

// secret

RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];

```

�APPDelegate中重写如下方法

/**

这里处理新浪微博SSO授权之后跳转回来,和微信分享完成之后跳转回来

*/

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url {

return[UMSocialSnsServicehandleOpenURL:url];

}

/**

这里处理新浪微博SSO授权进入新浪微博客户端后进入后台,再返回原来应用

*/

- (void)applicationDidBecomeActive:(UIApplication*)application

{

[UMSocialSnsServiceapplicationDidBecomeActive];

}


在按钮事件写入如下代码

UMSocialSnsPlatform*snsPlatform =

[UMSocialSnsPlatformManagergetSocialPlatformWithName:UMShareToSina]; snsPlatform.loginClickHandler(self,[UMSocialControllerService

defaultControllerService],YES,^(UMSocialResponseEntity*response){

//获取微博用户名、uid、token等

if(response.responseCode==UMSResponseCodeSuccess) {

NSDictionary*dict = [UMSocialAccountManagersocialAccountDictionary];

UMSocialAccountEntity*snsAccount =[[UMSocialAccountManagersocialAccountDictionary]valueForKey:snsPlatform.platformName];

NSLog(@"\nusername = %@,\n usid =%@,\n token = %@ iconUrl = %@,\n unionId = %@, message =%@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL,snsAccount.unionId, response.message);

}});


ok完成了,运行起来,不能再模拟器中测试,只能真机调试

发了点时间整理的,如果对你有帮助,就点击下面的红色心吧,给我赞哦,多谢支持!!!!

最后祝大家成功实现!!!!!!!!



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 产品概述 Android U-share 6.0sdk是在5.0+的基础上做了进一步的优化,降低了包的大小,对于三...
    AiPuff阅读 7,151评论 1 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,156评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,110评论 25 709
  • 昨天一整天搞到夜晚10点多,今天上午又问了下网友,终于搞好了,umeng 新浪 官方文档太坑,(对于小白来说确实不...
    ttdiOS阅读 2,132评论 0 8
  • #字词# 1.even though--although 原文:Halloween is my favorite ...
    赫赫有铭阅读 449评论 0 0