android shareSDK 微博分享案例
ShareSDK
APP_KEY 219b1121fc68
腾讯微博
key 801517904
secret bfba83ae253c8f38dabe22c5fa4093bd
新浪微博
key 3815341537
secret f19fb8f89acc090716de7e3bde2e5f9e
回调页:https://api.weibo.com/oauth2/default.html
包名+keySotre签名:91f05bce6758f1a1e870a4f3fa5f871b
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
准备阶段:
使用ShareSDK步骤
1. ShareSDK官网,创建应用 获取Key
2. ShareSDK官网,下载SDK
3. 使ShareSDK的DEMO正常运行
(类库:ShareSDK for Android
demo:ShareSDK for Android Sample)
4.创建新的项目
5.去各平台注册key
新浪微博:
a.证书签名需要个人证书导出项目时获取到
MD5 : 91:F0:5B:CE:67:58:F1:A1:E8:70:A4:F3:FA:5F:87:1B
证书格式为小写字母并不含:
91f05bce6758f1a1e870a4f3fa5f871b
b.
授权回调页:https://api.weibo.com/oauth2/default.html
6.sample里所有的图片以及values拷入当前新的项目:
此时需要修改 main_activity.xml and menu.xml 中跟 @String/ 有关的信息!
7.sample里asset里Sharesdk.xml拷入当前新的项目,并且修改指定内容
RedirectUrl:如果指定授权回调页,就填写回调页,如没有,就填写应用网址
8.需要把sample里mainifest中的权限拷入当前新的项目
9.sample里mainifest中的ShareSDKUIShell,activity注册到当前新的项目中,代码如下:
<activity
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"android:windowSoftInputMode="stateHidden|adjustResize" >
</activity>
10.拷入需要用到的jar包
必拷:mframework.jar
必拷:ShareSDK-Core-2.3.8jar
分享指定平台:
ShareSDK-XXX.jar
11.将onkeyshare包拷贝到当前项目中
分享步骤:
***************************
1.初始化ShareSDK
ShareSDK.init(this);
2.设置指定平台
Platform p=ShareSDK.getPlatform(XXX.NAME);
3.设置平台监听器
p.setPlatform
AcitonListener{
1.error
2.complete
3.cancel
}
4.进行授权
p.rauthorize();
5.重写平台监听器中的complete
获取某平台参数对象
Platform.ShareParams ps=
new XXX.ShareParams();
添加要分享的数据
ps.setText/setImageUrl/set..
分享
p.share(ps);
分享案例代码:
1. package com.example.lovesharesdkdemo;
2.
3. import java.util.HashMap;
4.
5. import android.app.Activity;
6. import android.os.Bundle;
7. import android.util.Log;
8. import android.view.Menu;
9. import android.view.View;
10. import android.view.View.OnClickListener;
11. import android.widget.TextView;
12. import cn.sharesdk.framework.Platform;
13. import cn.sharesdk.framework.PlatformActionListener;
14. import cn.sharesdk.framework.ShareSDK;
15. import cn.sharesdk.tencent.weibo.TencentWeibo;
16.
17. public class MainActivity extends Activity {
18.
19. private Platform platform;
20.
21. private TextView textView;
22.
23. @Override
24. protected void onCreate(Bundle savedInstanceState) {
25. super.onCreate(savedInstanceState);
26. setContentView(R.layout.activity_main);
27. //1 初始化SDK
28. ShareSDK.initSDK(getApplicationContext());
29. //2.设置指定平台
30. platform = ShareSDK.getPlatform(TencentWeibo.NAME);
31. //3 获取组件 注册事件
32. textView = (TextView) this.findViewById(R.id.buttton);
33. textView.setOnClickListener(new OnClickListener() {
34.
35. @Override
36. public void onClick(View v) {
37. //TOFO 分享SDK
38. getShareSDK();
39. }
40.
41. private void getShareSDK() {
42. //3 给平台添加 listener
43. platform.setPlatformActionListener(new PlatformActionListener() {
44.
45. @Override
46. public void onError(Platform arg0, int arg1, Throwable arg2) {
47. // TODO error useful
48. ---error="+arg2.getLocalizedMessage());
49. }
50.
51. @Override
52. <String, Object> arg2) {
53. // TODO finished useful
54.
55. //设置分享的参数:
56. shareParams = new TencentWeibo.ShareParams();
57.
58. shareParams.setText("美女的世界");
59. u=750616964,1500186643&fm=59");
60.
61. // 分享
62. platform.share(shareParams);
63. }
64.
65. @Override
66. public void onCancel(Platform arg0, int arg1) {
67. // TODO cancel
68.
69. }
70. });
71.
72. //4 授权平台! 异步任务:
73. platform.authorize();
74. }
75. });
76.
77. }
78.
79. @Override
80. public boolean onCreateOptionsMenu(Menu menu) {
81. // Inflate the menu; this adds items to the action bar if it is present.
82. getMenuInflater().inflate(R.menu.main, menu);
83. return true;
84. }
85.
86. }
androidmainfes.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3. package="com.example.lovesharesdkdemo"
4. android:versionCode="1"
5. android:versionName="1.0" >
6.
7. <uses-sdk
8. android:minSdkVersion="14"
9. android:targetSdkVersion="19" />
10.
11. <!-- 权限设置 -->
12. <uses-permission android:name="android.permission.GET_TASKS" />
13. <uses-permission android:name="android.permission.INTERNET" />
14. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
15. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
16. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
17. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
18. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
19. <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
20. <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
21.
22.
23.
24. <application
25. android:allowBackup="true"
26. android:icon="@drawable/ic_launcher"
27. android:label="@string/app_name"
28. android:theme="@style/AppTheme" >
29. <activity
30. android:name="com.example.lovesharesdkdemo.MainActivity"
31. android:label="@string/app_name" >
32. <intent-filter>
33. <action android:name="android.intent.action.MAIN" />
34.
35. <category android:name="android.intent.category.LAUNCHER" />
36. </intent-filter>
37. </activity>
38.
39. <!-- SdkShare frameWork -->
40. <activity
41. android:name="cn.sharesdk.framework.ShareSDKUIShell"
42. android:theme="@android:style/Theme.Translucent.NoTitleBar"
43. android:configChanges="keyboardHidden|orientation|screenSize"
44. android:windowSoftInputMode="stateHidden|adjustResize" >
45. </activity>
46.
47.
48. </application>
49.
50. </manifest>
ShareSDK.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <DevInfor>
3. <!--
4. 说明:
5.
6. 1、表格中的第一项
7. <ShareSDK
8. AppKey="api20" />
9. 是必须的,其中的AppKey是您在ShareSDK上注册的开发者帐号的AppKey
10.
11. 2、所有集成到您项目的平台都应该为其在表格中填写相对应的开发者信息,以新浪微博为例:
12. <SinaWeibo
13. Id="1"
14. SortId="1"
15. AppKey="568898243"
16. AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
17. RedirectUrl="http://www.sharesdk.cn"
18. Enable="true" />
19. 其中的SortId是此平台在分享列表中的位置,由开发者自行定义,可以是任何整型数字,数值越大
20. 越靠后AppKey、AppSecret和RedirectUrl是您在新浪微博上注册开发者信息和应用后得到的信息
21. Id是一个保留的识别符,整型,ShareSDK不使用此字段,供您在自己的项目中当作平台的识别符。
22. Enable字段表示此平台是否有效,布尔值,默认为true,如果Enable为false,即便平台的jar包
23. 已经添加到应用中,平台实例依然不可获取。
24.
25. 各个平台注册应用信息的地址如下:
26. 新浪微博 http://open.weibo.com
27. 腾讯微博 http://dev.t.qq.com
28. QQ空间 http://connect.qq.com/intro/login/
29. 微信好友 http://open.weixin.qq.com
30. Facebook https://developers.facebook.com
31. Twitter https://dev.twitter.com
32. 人人网 http://dev.renren.com
33. 开心网 http://open.kaixin001.com
34. 搜狐微博 http://open.t.sohu.com
35. 网易微博 http://open.t.163.com
36. 豆瓣 http://developers.douban.com
37.
38. 有道云笔记 http://note.youdao.com/open/developguide.html#app
39. 印象笔记 https://dev.evernote.com/
40. newapp=
41. FourSquare https://developer.foursquare.com/
42. 搜狐随身看 https://open.sohu.com/
43. Flickr http://www.flickr.com/services/
44. Pinterest http://developers.pinterest.com/
45. Tumblr http://www.tumblr.com/developers
46. Dropbox https://www.dropbox.com/developers
47. Instagram http://instagram.com/developer#
48. VKontakte http://vk.com/dev
49. 易信好友 http://open.yixin.im/
50. 明道 http://open.mingdao.com/
51. Line http://media.line.me/zh-hant/
52. >
53.
54. <!-- 修改成你在sharesdk后台注册的应用的appkey"-->
55. <ShareSDK
56. AppKey = "3500df6f55df"/>
57.
58. <!-- ShareByAppClient标识是否使用微博客户端分享,默认是false -->
59. <SinaWeibo
60. Id="1"
61. SortId="1"
62. AppKey="568898243"
63. AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
64. RedirectUrl="http://www.sharesdk.cn"
65. ShareByAppClient="false"
66. Enable="true" />
67.
68. <!-- 腾讯微博 -->
69. <TencentWeibo
70. Id="2"
71. SortId="2"
72. AppKey="801545336"
73. AppSecret="b3def3a6ff684bee7de4e49d7884c0b3"
74. RedirectUri="http://www.baidu.com"
75. Enable="true" />
76.
77. <!-- ShareByAppClient标识是否使用微博客户端分享,默认是false -->
78. <QZone
79. Id="3"
80. SortId="3"
81. AppId="100371282"
82. AppKey="aed9b0303e3ed1e27bae87c33761161d"
83. ShareByAppClient="true"
84. Enable="true" />
85.
86. <!--
87. Wechat微信和WechatMoments微信朋友圈的appid是一样的;
88.
89. 注意:开发者不能用我们这两个平台的appid,否则分享不了
90.
91. 微信测试的时候,微信测试需要先签名打包出apk,
92. sample测试微信,要先签名打包,keystore在sample项目中,密码123456
93.
94. BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过
95. 审核的应用也可以执行分享,但是仅限于分享文字和图片,不能分享其他类型,
96. 默认值为false。此外,微信收藏不支持此字段。
97. >
98. <Wechat
99. Id="4"
100. SortId="4"
101. AppId="wx4868b35061f87885"
102. AppSecret="64020361b8ec4c99936c0e3999a9f249"
103. BypassApproval="false"
104. Enable="true" />
105.
106. <WechatMoments
107. Id="5"
108. SortId="5"
109. AppId="wx4868b35061f87885"
110. AppSecret="64020361b8ec4c99936c0e3999a9f249"
111. BypassApproval="true"
112. Enable="true" />
113.
114. <WechatFavorite
115. Id="6"
116. SortId="6"
117. AppId="wx4868b35061f87885"
118. AppSecret="64020361b8ec4c99936c0e3999a9f249"
119. Enable="true" />
120.
121. <!-- ShareByAppClient标识是否使用微博客户端分享,默认是false -->
122. <QQ
123. Id="7"
124. SortId="7"
125. AppId="100371282"
126. AppKey="aed9b0303e3ed1e27bae87c33761161d"
127. ShareByAppClient="true"
128. Enable="true" />
129.
130. <Facebook
131. Id="8"
132. SortId="8"
133. ConsumerKey="107704292745179"
134. ConsumerSecret="38053202e1a5fe26c80c753071f0b573"
135. Enable="true" />
136.
137. <Twitter
138. Id="9"
139. SortId="9"
140. ConsumerKey="mnTGqtXk0TYMXYTN7qUxg"
141. ConsumerSecret="ROkFqr8c3m1HXqS3rm3TJ0WkAJuwBOSaWhPbZ9Ojuc"
142. CallbackUrl="http://www.sharesdk.cn"
143. Enable="true" />
144.
145. <Renren
146. Id="10"
147. SortId="10"
148. AppId="226427"
149. ApiKey="fc5b8aed373c4c27a05b712acba0f8c3"
150. SecretKey="f29df781abdd4f49beca5a2194676ca4"
151. Enable="true" />
152.
153. <KaiXin
154. Id="11"
155. SortId="11"
156. AppKey="358443394194887cee81ff5890870c7c"
157. AppSecret="da32179d859c016169f66d90b6db2a23"
158. RedirectUri="http://www.sharesdk.cn"
159. Enable="true" />
160.
161. <Email
162. Id="12"
163. SortId="12"
164. Enable="true" />
165.
166. <ShortMessage
167. Id="13"
168. SortId="13"
169. Enable="true" />
170.
171. <SohuMicroBlog
172. Id="14"
173. SortId="14"
174. ApiKey="q70QBQM9T0COxzYpGLj9"
175. ConsumerKey="q70QBQM9T0COxzYpGLj9"
176. ConsumerSecret="XXYrx%QXbS!uA^m2$8TaD4T1HQoRPUH0gaG2BgBd"
177. CallbackUrl="http://www.sharesdk.cn"
178. Enable="true" />
179.
180. <NetEaseMicroBlog
181. Id="15"
182. SortId="15"
183. ConsumerKey="T5EI7BXe13vfyDuy"
184. ConsumerSecret="gZxwyNOvjFYpxwwlnuizHRRtBRZ2lV1j"
185. RedirectUri="http://www.shareSDK.cn"
186. Enable="true" />
187.
188. <Douban
189. Id="16"
190. SortId="16"
191. ApiKey="02e2cbe5ca06de5908a863b15e149b0b"
192. Secret="9f1e7b4f71304f2f"
193. RedirectUri="http://www.sharesdk.cn"
194. Enable="true" />
195.
196. <YouDao
197. Id="17"
198. SortId="17"
199. HostType="product"
200. ConsumerKey="dcde25dca105bcc36884ed4534dab940"
201. ConsumerSecret="d98217b4020e7f1874263795f44838fe"
202. RedirectUri="http://www.sharesdk.cn"
203. Enable="true" />
204.
205. <SohuSuishenkan
206. Id="18"
207. SortId="18"
208. AppKey="e16680a815134504b746c86e08a19db0"
209. AppSecret="b8eec53707c3976efc91614dd16ef81c"
210. RedirectUri="http://sharesdk.cn"
211. Enable="true" />
212.
213. <!--
214. 在中国大陆,印象笔记有两个服务器,一个是沙箱(sandbox),一个是生产服务器(china)。
215. 一般你注册应用,它会先让你使用sandbox,当你完成测试以后,可以到
216. http://dev.yinxiang.com/support/上激活你的ConsumerKey,激活成功后,修改HostType
217. 为china就好了。至于如果您申请的是国际版的印象笔记(Evernote),则其生产服务器类型为
218. “product”。
219.
220. 如果目标设备上已经安装了印象笔记客户端,ShareSDK允许应用调用本地API来完成分享,但
221. 是需要将应用信息中的“ShareByAppClient”设置为true,此字段默认值为false。
222. >
223. <Evernote
224. Id="19"
225. SortId="19"
226. HostType="sandbox"
227. ConsumerKey="sharesdk-7807"
228. ConsumerSecret="d05bf86993836004"
229. ShareByAppClient="false"
230. Enable="true" />
231.
232. <LinkedIn
233. Id="20"
234. SortId="20"
235. ApiKey="ejo5ibkye3vo"
236. SecretKey="cC7B2jpxITqPLZ5M"
237. RedirectUrl="http://sharesdk.cn"
238. Enable="true" />
239.
240. <GooglePlus
241. Id="21"
242. SortId="21"
243. Enable="true" />
244.
245. <FourSquare
246. Id="22"
247. SortId="22"
248. ClientID="G0ZI20FM30SJAJTX2RIBGD05QV1NE2KVIM2SPXML2XUJNXEU"
249. ClientSecret="3XHQNSMMHIFBYOLWEPONNV4DOTCDBQH0AEMVGCBG0MZ32XNU"
250. RedirectUrl="http://www.sharesdk.cn"
251. Enable="true" />
252.
253. <Pinterest
254. Id="23"
255. SortId="23"
256. ClientId="1432928"
257. Enable="true" />
258.
259. <Flickr
260. Id="24"
261. SortId="24"
262. ApiKey="33d833ee6b6fca49943363282dd313dd"
263. ApiSecret="3a2c5b42a8fbb8bb"
264. RedirectUri="http://www.sharesdk.cn"
265. Enable="true" />
266.
267. <Tumblr
268. Id="25"
269. SortId="25"
270. OAuthConsumerKey="2QUXqO9fcgGdtGG1FcvML6ZunIQzAEL8xY6hIaxdJnDti2DYwM"
271. SecretKey="3Rt0sPFj7u2g39mEVB3IBpOzKnM3JnTtxX2bao2JKk4VV1gtNo"
272. CallbackUrl="http://sharesdk.cn"
273. Enable="true" />
274.
275. <Dropbox
276. Id="26"
277. SortId="26"
278. AppKey="7janx53ilz11gbs"
279. AppSecret="c1hpx5fz6tzkm32"
280. Enable="true" />
281.
282. <VKontakte
283. Id="27"
284. SortId="27"
285. ApplicationId="3921561"
286. Enable="true" />
287.
288. <Instagram
289. Id="28"
290. SortId="28"
291. ClientId="ff68e3216b4f4f989121aa1c2962d058"
292. ClientSecret="1b2e82f110264869b3505c3fe34e31a1"
293. RedirectUri="http://sharesdk.cn"
294. Enable="true" />
295.
296. <!--
297. Yixin易信和YixinMoments易信朋友圈的appid是一样的;
298.
299. 注意:开发者不能用我们这两个平台的appid,否则分享不了
300.
301. 易信测试的时候需要先签名打包出apk,
302. sample测试易信,要先签名打包,keystore在sample项目中,密码123456
303.
304. BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过
305. 审核的应用也可以执行分享,但是仅限于分享文字或图片,不能分享其他类型,
306. 默认值为false。
307. >
308. <Yixin
309. Id="29"
310. SortId="29"
311. AppId="yx0d9a9f9088ea44d78680f3274da1765f"
312. BypassApproval="true"
313. Enable="true" />
314.
315. <YixinMoments
316. Id="30"
317. SortId="30"
318. AppId="yx0d9a9f9088ea44d78680f3274da1765f"
319. BypassApproval="true"
320. Enable="true" />
321.
322. <Mingdao
323. Id="31"
324. SortId="31"
325. AppKey="EEEE9578D1D431D3215D8C21BF5357E3"
326. AppSecret="5EDE59F37B3EFA8F65EEFB9976A4E933"
327. RedirectUri="http://sharesdk.cn"
328. Enable="true" />
329.
330. <Line
331. Id="32"
332. SortId="32"
333. Enable="true" />
334.
335. <KakaoTalk
336. Id="33"
337. SortId="33"
338. Enable="true" />
339.
340. <KakaoStory
341. Id="34"
342. SortId="34"
343. Enable="true" />
344.
345. </DevInfor>
需要的包:如图: