新浪微薄分享一(授权)
2014-05-26 18:05
267 查看
闲来无事,想把项目中用到的第三方组件总结一下,省的以后用到还得重新学习。接下来的一系列文章涉及到的第三方组件有新浪、腾讯、微信等第三方分享和登录,支付宝,个推等。
今天先说一下新浪微薄分享之授权。因为我们一个项目中一般设计到的分享都有好几种,如果都引用对应的sdk的话项目相对比较大。另外sdk官方都推出了Demo,使用起来也比较简单,所以我们这里讲的都是网页接入。
无论是分享还是登录,首先要做的都是获得用户授权。授权目前有两种方式,我们先讲目前推荐的方式,主要分为二步
第一步:请求授权,获取Code
再来讲第二种方式,此种方式可能考虑到安全问题,新浪的api文档上已经没有了,但是依然可以使用,较第一种来说比较简单,只要加上一个字段一步就搞定了。
就是response_type=token,代码如下:
今天先说一下新浪微薄分享之授权。因为我们一个项目中一般设计到的分享都有好几种,如果都引用对应的sdk的话项目相对比较大。另外sdk官方都推出了Demo,使用起来也比较简单,所以我们这里讲的都是网页接入。
无论是分享还是登录,首先要做的都是获得用户授权。授权目前有两种方式,我们先讲目前推荐的方式,主要分为二步
第一步:请求授权,获取Code
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.auth); web = (WebView) findViewById(R.id.web); StringBuffer sb = new StringBuffer("https://open.weibo.cn/oauth2/authorize"); sb.append("&client_id=" + Constant.TENCONNECT_APP_ID); try { sb.append("&redirect_uri=" + URLEncoder.encode(Constant.TENCONNECT_REDIRECT_URL, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } sb.append("&display=mobile"); web.getSettings().setJavaScriptEnabled(true); web.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //这里获取的url=http://www.myaddress.com/?code=6f59f37d0212ee969cdc943aa9af9443 String code = getCodeBySubUrl(url);//通过截取url获取code getAccessToken(code);//第二步获取accessToken }); web.loadUrl(sb.toString()); }第二步:通过code,发送post请求,获取授权accessToken
public void getAccessToken(final String code) { new AsyncTask<Object, Object, String>() { @Override protected Json doInBackground(Object... params) { Map<String,String> parameters = new HashMap<String, String> parameters.put("client_id", client_id); parameters.put("client_secret", Contents.REGISTERED_REDIRECT_URI); parameters.put("grant_type", "authorization_code"); parameters.put("code", code); parameters.put("redirect_uri",redirect_uri); byte[] b = HttpClientConnector.getInstance(AuthWebActivity.this).requestByPost("https://api.weibo.com/oauth2/access_token",parameters); String result = new String(b); LogInfo.i(TAG, result); Json json = new Json(result); return json; } @Override protected void onPostExecute(Json result) { if (result != null) { String accessToken = result.getString("access_token"); } super.onPostExecute(result); } }; }.execute()
再来讲第二种方式,此种方式可能考虑到安全问题,新浪的api文档上已经没有了,但是依然可以使用,较第一种来说比较简单,只要加上一个字段一步就搞定了。
就是response_type=token,代码如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.auth); web = (WebView) findViewById(R.id.web); StringBuffer sb = new StringBuffer("https://open.weibo.cn/oauth2/authorize"); sb.append("&client_id=" + Constant.TENCONNECT_APP_ID); try { sb.append("&redirect_uri=" + URLEncoder.encode(Constant.TENCONNECT_REDIRECT_URL, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } sb.append("&display=mobile"); sb.append("&response_type=token"); web.getSettings().setJavaScriptEnabled(true); web.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //这里获取的url=http://www.myaddress.com/#access_token=2.00JjjRvC3BVyOD9ca2d6e2a2QbkbUE&remind_in=2625243&expires_in=2625243&uid=2678744171 //然后通过字符串截取获取access_token即可 }); web.loadUrl(sb.toString()); }
相关文章推荐
- 新浪微薄份额2(分享)
- Android 新浪授权和分享经验总结
- 新浪分享授权登录
- openapi 新浪微薄分享
- 【IT书籍分享群】新浪微薄群
- 【分享】新浪微薄用户信息40000条
- 新浪微薄分享二(分享)
- 腾讯微薄分享一(授权)
- java微信网页授权获取用户信息以及JSSDK自定义分享等功能<三>
- 对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等
- 如何更改分享来源和授权页面的友盟社会化组件字段
- 辽阳新浪微薄群
- 分享一个单点登录、OAuth2.0授权系统源码(SimpleSSO)
- 新浪开发平台实现分享
- IOS新浪微博开发--分享、授权登录
- Android开发实现新浪账号授权登录的功能
- oracle创建删除用户示例分享(oracle删除用户命令及授权)
- 分享知识-快乐自己:Oracle创建用户、角色、授权、建表
- ShareSDK(iOS版)开发实践:自定义授权视图和分享视图导航栏
- Android:微信授权登录与微信分享全解析