ShareSDK Twitter

news2024/9/23 23:34:21

创建应用

1.登录Twitter控制台并通过认证

2.点击Developer Portal进入Twitter后台

3.点击Sign up for Free Account创建应用

4.配置应用信息

以下为创建过程示例,图中信息仅为示例,创建时请按照真实信息填写,否则无法正常使用。

image-20240717101627510

image-20240717101801758

image-20240717102617543

权限申请

Twitter分享和授权需要申请权限,以及配置回调地址

image-20240718095439148

image-20240717110013372

image-20240718095300221

集成使用

获取配置

客户端在使用Twitter平台之前,需要先获取Twitter为应用分发的Client ID、Client Secret、Callback URI / Redirect URL。

image-20240718095801651

image-20240718095843954

Android

SDK集成

在集成Twitter相关能力之前,请先按照ShareSDK集成指南完成ShareSDK的集成

appKey的值对应Twitter平台的Client ID,appSecret的值对应Twitter平台的Client Secret,callbackUri的值对应Twitter平台的Callback URI / Redirect URL

MobSDK {
    appKey "xxxxxxxxxxxxx"
    appSecret "xxxxxxxxxxxxxxxx"
    ShareSDK {
        devInfo {
            Twitter {
                appKey "xxxxxxxxxxxxxxxx"
                appSecret "xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx"
                callbackUri "xxxxxxxxxxxxxxxx"
                IsUseV2 true
                shareByAppClient true
                bypassApproval true
                enable true
            } 
        }
    }
}

分享示例

代码

以下代码示例分享图片和文字至Twitter

Platform.ShareParams shareParams = new Platform.ShareParams();
shareParams.setText("测试文本");
shareParams.setImageUrl("http://pic28.photophoto.cn/20130818/0020033143720852_b.jpg");
Platform platform =  ShareSDK.getPlatform(Twitter.NAME);              
//设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作)
platform.setPlatformActionListener(new PlatformActionListener() {
    public void onError(Platform platform, int arg1, Throwable throwable) {
        //失败的回调,arg:平台对象,arg1:表示当前的动作,arg2:异常信息
        Log.d("ShareSDK", "onError ---->  分享失败" + throwable.toString());
    }
    public void onComplete(Platform platform, int arg1, HashMap hashMap) {
        //分享成功的回调
        Log.d("ShareSDK", "onComplete ---->  分享成功");
    }
    public void onCancel(Platform platform, int arg1) {
        //取消分享的回调
        Log.d("ShareSDK", "onCancel ---->  取消分享");
    }
});
platform.share(shareParams);
效果图

image-20240718100101745

授权示例

代码
Platform platform = ShareSDK.getPlatform(Twitter.NAME);
platform.setPlatformActionListener(new PlatformActionListener() {
    @Override
    public void onError(Platform platform, int arg1, Throwable throwable) {
        // TODO 返回授权失败错误码
        arg2.printStackTrace();
        Log.e("ShareSDK","===========================登录失败"+throwable.toString());
    }
    @Override
    public void onComplete(Platform platform, int arg1, HashMap<String, Object> hashMap) {
        // TODO 授权成功后获取信息操作等
        Log.e("ShareSDK","=========================="+platform.getDb().exportData());
        Log.e("ShareSDK","=========================="+hashMap.toString());
    }
    @Override
    public void onCancel(Platform platform, int arg1) {
        // TODO 取消回调
        Log.e("ShareSDK","===========================登录取消");
    }
});
platform.showUser(null);
返回信息示例

在ShareSDK成功回调中调用 platform.getDb().exportData(),将返回以下信息

{
    "resume": "null",
    "favouriteCount": "null",
    "gender": "2",
    "icon": "null",
    "snsregat": "0",
    "snsUserUrl": "https://twitter.com/null",
    "userID": "0",
    "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "shareCount": "null",
    "secretType": "0",
    "nickname": "null",
    "name": "xxx",
    "id": "xxxxxxxxxxxxxxx",
    "followerCount": "null",
    "username": "xxxxxxxxxxxxxxxxx"
}

iOS

SDK集成

在集成微博相关能力之前,请先按照ShareSDK集成指南完成ShareSDK的集成。

配置URL Scheme

打开项目的Info选项,然后选择URL Types,添加URL Scheme配置 twitterkit-Twitter的ClientID,例如:twitterkit-xxxxxxxxxxxxxxx

image-20240718111816045

配置白名单

(1)在项目的info.plist中添加Queried URL Schemes,类型为Array
(2)添加一个需要支持的项目,类型为字符串类型,twitter需要添加的白名单为twitterauth

image-20240717114543481

初始化SDK

在使用Twitter能力之前,需要先对其初始化,其中setupTwitterWithKey的值对应Twitter平台中的Client ID,secret对应Twitter平台中的Client Secret,redirectUrl对应Twitter平台中的Callback URI / Redirect URL

[ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {
     [platformsRegister setupTwitterWithKey:@"XXXXXXXXXXX" secret:@"XXXXXXXXXXXXXXXX" redirectUrl:@"XXXXXXXXXXXX"];
}

分享示例

代码

以下代码示例分享图片至Twitter

#import <ShareSDK/ShareSDK.h>
NSMutableDictionary * shareParams = [NSMutableDictionary dictionary];
[shareParams SSDKSetupShareParamsByText:@"Jshuoh "
                                 images:@"http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png"
                                    url: nil
                                  title:@"I'm Not The"
                                   type:SSDKContentTypeImage];
[ShareSDK share:SSDKPlatformTypeTwitter parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
        if (state == SSDKResponseStateSuccess)
        {
            NSLog(@"分享成功");
        }
        if (state == SSDKResponseStateFail)
        {
            NSLog(@"失败----%@",error.description);
        }
        if (state == SSDKResponseStateCancel)
        {
            NSLog(@"取消");
        }  
}];      
效果图

image-20240718112636954

授权示例

代码
[ShareSDK authorize:SSDKPlatformTypeTwitter
           settings:nil
     onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) {
        if (state == SSDKResponseStateSuccess)
        {
            NSLog(@"rawData---%@",user.rawData);//用户信息打印
            NSLog(@"credential---%@",[user.credential rawData]);//授权信息打印
        }
        if (state == SSDKResponseStateFail)
        {
            NSLog(@"%@",error.description);
        }
        if (state == SSDKResponseStateCancel)
        {
            NSLog(@"取消");;
        }
}];
返回信息示例

user.rawData返回信息为:

{
    id = XXXXXXX;
    name = XXXXXXX;
    username = XXXXXX;
}

[user.credential rawData]返回信息为:

{
    "access_token" = XXXXXXXXXXXXXX;
    "expires_in" = 7200;
    scope = "tweet.write users.read tweet.read";
    "token_type" = bearer;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2046635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能安全守护,寺庙安全用电解决方案

在四川省蓬溪县城北&#xff0c;高峰山以其千年的历史沉淀和独特的文化风貌&#xff0c;默默诉说着道教与佛教交融的传奇。然而&#xff0c;2017年5月31日凌晨的一声巨响&#xff0c;打破了这里的宁静&#xff0c;一场突如其来的大火&#xff0c;让这座承载着无数信徒信仰与梦想…

10步搞定Python爬虫从零到精通!

学习Python网络爬虫可以分为以下几个步骤&#xff0c;每一步都包括必要的细节和示例代码&#xff0c;以帮助你从零开始掌握这一技能。 第一步&#xff1a;理解网络爬虫基础 什么是网络爬虫&#xff1f; 网络爬虫是一种自动化程序,用来从互联网上收集数据.它通过发送 HTTP 请求…

大学生科创项目在线管理系统的设计与实现

TOC springboot267大学生科创项目在线管理系统的设计与实现 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电…

爬虫案例4——爬取房天下数据

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正 任务&#xff1a;从房天下网中爬取小区名称、地址、价格和联系电话 目标网页地址&#xff1a;https://newhouse.fang.com/house/s/ 一、思路和过程 目标网页具体内容如下&#xff1a; ​​​​ …

揭秘面试必备:高频算法与面试题全面解析

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…

Web安全:SqlMap工具

一、简介 sqlmap 是一款开源的渗透测试工具&#xff0c;可以自动化进行SQL注入的检测、利用&#xff0c;并能接管数据库服务器。它具有功能强大的检测引擎,为渗透测试人员提供了许多专业的功能并且可以进行组合&#xff0c;其中包括数据库指纹识别、数据读取和访问底层文件系统…

SystemUI手势操作隐藏显示导航栏

在Android 12中&#xff0c;通过SystemUI手势操作来隐藏和显示导航栏主要涉及对系统UI的定制和编程控制。以下是一些实现这一功能的方法&#xff1a; 第一类. 使用WindowInsetsController Android 12引入了一个新的WindowInsetsController类&#xff0c;它允许开发者更好地控…

加速科技精彩亮相2024中国(深圳)集成电路峰会

8月16日&#xff0c;2024中国&#xff08;深圳&#xff09;集成电路峰会&#xff08;简称“ICS2024峰会”&#xff09;在深圳如期开展&#xff0c;为行业带来一场技术盛宴。在这场盛会中&#xff0c;加速科技携2款核心产品——ST2500EX、ST2500E重磅亮相&#xff0c;凭借领先的…

【leetcode详解】特殊数组II : 一题代表了一类问题(前缀和思想)

前缀和的优势 给定一个数组&#xff0c;前缀和的特点在于&#xff0c;任意给出一对始末位置&#xff0c;能够用O(1)的时间复杂度得到始末位置之间所有元素的某种关系。 题型分析 这道题目正是“给出始末位置&#xff0c;检测其中元素特点”那一类&#xff0c;那我们就想&#…

【机器学习西瓜书学习笔记——概率图模型】

机器学习西瓜书学习笔记【第十四章】 第十四章 概率图模型概率图模型分类14.1 隐马尔可夫模型贝叶斯网络马尔科夫链隐马尔科夫模型 14.2 马尔可夫随机场( M R F MRF MRF)马尔可夫场定理算法原理概率推理参数学习算法对比 14.3 条件随机场( C R F CRF CRF)优缺点优点缺点 链式条…

Redis -LFU(Least Frequently Used,最少使用频率)缓存淘汰算法

在 Redis 的 LFU&#xff08;Least Frequently Used&#xff0c;最少使用频率&#xff09;缓存淘汰算法中&#xff0c;lru 字段被拆分成两部分&#xff1a;高 16 位存储 ldt&#xff08;Last Decrement Time&#xff09;&#xff0c;低 8 位存储 logc&#xff08;Logistic Coun…

【图像特效系列】卡通特效的实践 | 包含代码和效果图

目录 一 卡通特效 代码 效果图 图像特效系列主要是对输入的图像进行处理,生成指定特效效果的图片。图像素描特效会将图像的边界都凸显出来;图像怀旧特效是指图像经历岁月的昏暗效果;图像光照特效是指图像存在一个类似于灯光的光晕特效,图像像素值围绕光照中心点呈圆形范…

【就业】中国铁路人才招聘

中国国家铁路集团有限公司&#xff0c;是中国财政部直接出资的大型国有企业&#xff0c;与国资委直接管理的央企不同&#xff0c;它是由财政部代表国务院履行出资人职责 &#xff0c;由中央管理的国有独资公司。其前身是由国家铁道部政企分离后剥离出来的全民所有制企业&#x…

Docker 基础—— 数据卷

1.数据卷 容器是隔离环境&#xff0c;容器内程序的文件、配置、运行时产生的容器都在容器内部&#xff0c;我们要读写容器内的文件非常不方便&#xff0c;例如&#xff1a; 如果要升级MySQL版本&#xff0c;需要销毁旧容器&#xff0c;那么数据岂不是跟着被销毁了&#xff1f; …

idea安装二进制文本阅读插件

引言 在软件开发过程中&#xff0c;有时需要查看二进制文件的内容以调试或分析问题。虽然有许多专用工具可以处理这类任务&#xff0c;但直接在 IDE 内集成这些功能无疑更加方便高效。本文将介绍如何在 IntelliJ IDEA 2023中安装和配置一个名为 BinEd的插件&#xff0c;以及如…

Python实验-选择结构

实验目的 &#xff08;1&#xff09;掌握条件语句中逻辑表达式的正确书写规则 &#xff08;2&#xff09;掌握单分支、双分支和多分之条件语句的使用方法 实验内容 1.某校三好学生的评定标准为&#xff1a;语文和数学两科的平均成绩大于90&#xff0c;且每科成绩不低于85分&…

人工智能系统测试生命周期详解之测试分析

前面的文章里我们已经整体介绍过了人工智能测试的生命周期&#xff0c;它需要经历测试需求的分析、测试环境的准备、数据的准备与验证、测试的执行预分析以及上线后的监控这样一个过程。前面的文章已经为大家介绍了人工智能系统测试生命周期的“需求分析”环节、“测试环境准备…

【TCP协议】

一、TCP分层 TCP/IP协议是Internet互联网中最基本的协议&#xff0c;其在一定程度上参考了OSI七层模型&#xff0c;但在TCP/IP协议中&#xff0c;七层被简化成了四层&#xff0c;如下&#xff1a; OSI模型TCP/IP协议第七层应用层 应用层 HTTP/FTP/SMTP/Telnet 第六层显示层第…

UI设计:具备什么特征,就可以被认定为时尚风格

一、时尚风格的特征 时尚风格的UI设计通常具备以下一些特征&#xff1a; 扁平化设计&#xff1a;时尚风格的UI设计通常采用扁平化的设计风格&#xff0c;包括简洁的图标、清晰的排版和简约的色彩搭配。极简主义&#xff1a;时尚风格的UI设计追求极简主义&#xff0c;注重简洁、…

CAN总线-----帧格式

目录 前言 一、CAN总线帧格式分类 1.数据帧&#xff08;重点&#xff09; 2.遥控帧 3.错误帧 4.过载帧 5.间隔帧 二、位填充 三、波形实例 前言 本期我们就开始学习CAN总线的帧格式&#xff0c;对应帧格式的话&#xff0c;在前面我们学习I2C协议和SPI协议等协议的时候…