Android 第三方授权(微信篇)

0.申请开发者:

https://open.weixin.qq.com/cgi-bin/frame?t=home/app_tmpl&lang=zh_CN

1.下载sdk包:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN

2.导入sdk:这一步就不说了

3.初始化IWXAPI:

1 IWXAPI api = WXAPIFactory.createWXAPI(this, Constants.WEIXIN_APP_ID, true);

4.发送认证请求:

 1         if( !api.isWXAppInstalled()){
 2             Toast.makeText(context, "请先安装微信应用", Toast.LENGTH_SHORT).show();
 3             return false;
 4         }
 5         if( !api.isWXAppSupportAPI() ){
 6             Toast.makeText(context, "请先更新微信应用", Toast.LENGTH_SHORT).show();
 7             return false;
 8         }
 9         api.registerApp(Constant.WX_APP_ID);
10         final SendAuth.Req req = new SendAuth.Req();
11         req.scope = Constant.WX_APP_SCOPE;
12         req.state = Constant.WX_APP_STATE;
13         api.sendReq(req);

5.第4步会调起微信客户端让用户进行授权,用户进行操作后会调起***.***.***.wxapi.WXEntryActivity 这个类, ***.***.***是应用包名,这个WXEntryActivity需要继承Activity并且实现IWXAPIEventHandler接口,当然,这个WXEntryActivity也需要在清单文件中注册

 1 public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
 2
 3     private static String TAG = "WXEntryActivity";
 4     private IWXAPI api;
 5     public static BaseResp mResp = null;
 6
 7     // 是否有新的认证请求
 8     public static boolean hasNewAuth = false;
 9     private TextView mTvCode;
10
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         Log.i(TAG, "onCreate<-----------------------------");
15         mTvCode = new TextView(this);
16         mTvCode.setText("no code");
17         setContentView(mTvCode);
18         api = WXAPIFactory.createWXAPI(this, Constant.WX_APP_ID, false);
19         api.handleIntent(getIntent(), this);
20         Log.i(TAG, "onCreate----------------------------->");
21
22     }
23
24     @Override
25     protected void onNewIntent(Intent intent) {
26         super.onNewIntent(intent);
27         setIntent(intent);
28         api.handleIntent(intent, this);
29         finish();
30     }
31
32     @Override
33     public void onReq(BaseReq arg0) {
34         // TODO Auto-generated method stub
35         Log.i(TAG, "onReq<------------------------------");
36     }
37
38          /**
39           *认证后会回调该方法
40           */
41     @Override
42     public void onResp(BaseResp resp) {
43         // TODO Auto-generated method stub
44         String code = ((SendAuth.Resp) resp).code;
45                //获取code后需要去获取access_token
46     }
47 }        

获取code之后需要继续用code去获取access_token

 1 //获取微信登陆Token凭证
 2                     Request requestToken = new Request.Builder().url(tokenRequestUrl).build();
 3                     response = httpClient.newCall(requestToken).execute();
 4                     String tokenResponse = response.body().string();
 5                     Log.i(TAG, "tokenResponse = " + tokenResponse);
 6                     weChatTokenDo = JSON.parseObject(tokenResponse, WeiXinTokenDO.class);
 7
 8                     //获取微信个人信息
 9                     String userInfoRequest = getUserInfoRequest(weChatTokenDo.getAccess_token(), weChatTokenDo.getOpenid());
10                     Request requestUserInfo = new Request.Builder().url(userInfoRequest).build();
11                     response = httpClient.newCall(requestUserInfo).execute();
12                     String userInfoResponse = response.body().string();
13                     Log.i(TAG, "userInfo = " + userInfoResponse);
14                     String openid = JSON.parseObject    (userInfoResponse).getString("openid");
15                     Log.i(TAG, "微信登陆数据获取结束");
16                                          
1     private static String GET_REQUEST_ACCESS_TOKEN =
2             "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
3
4     private static String GET_REQUEST_USER_INFO =
5             "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";
 1     /**
 2      * 获取根据CODE得到的微信授权Token的Get请求地址
 3      * @param code
 4      * @return
 5      */
 6     private static String getTokenRequest(String code ){
 7         String tokenRequest = GET_REQUEST_ACCESS_TOKEN.replace("APPID", Constants.WEIXIN_APP_ID).
 8                 replace("SECRET", Constants.WEIXIN_APP_SECRET).
 9                 replace("CODE",code);
10         return tokenRequest;
11     }

至此,获取到的userInfoResponse字符串就是保存了用户个人信息的json串,然后里面都有什么内容可去微信官网看,自己解析操作
另外,别忘记在清单文件中注册

1 <!-- 微信登陆回调 -->
2         <activity
3             android:name"***.***.***.wxapi.WXEntryActivity"
4             android:label="@string/app_name"
5             android:exported="true"/>
时间: 2024-10-28 11:05:50

Android 第三方授权(微信篇)的相关文章

Android第三方授权(新浪微博篇)

Android第三方认证新浪微博,相对微信,也比较简单,并且sina给了一个sdk和sdkdemo,这个demo封装了许多,但是自己不准备记录这个demo,而是直接使用sdk 同样去sina官方下载sdk,自己去搜吧,地址不给了 1.初始化SsoHandler 1 AuthInfo mWeiboAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE); 2 SsoHandle

Android第三方授权(QQ篇)

QQ授权比微信授权相对来说会方便一些 同样需要去官网下载sdk和导入sdk到自己的工程 http://wiki.connect.qq.com/%E7%A7%BB%E5%8A%A8%E5%BA%94%E7%94%A8%E6%8E%A5%E5%85%A5%E6%A6%82%E8%BF%B0 1.初始化sdk,并且调起QQ客户端 Tencent mTencent = Tencent.createInstance(Constants.mQQAppid, context); mTencent.login(

Android App实现微信第三方授权登陆

下载官方SDK 在微信开放平台,下载微信的官方SDK,以及签名生成工具. 地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN 2.导入官方SDK 把Android开发工具包里面的libammsdk导入到你的项目中如下图: 这里要注意的是,应用签名不是在Ecl

【Android应用开发详解】实现第三方授权登录、分享以及获取用户资料

由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流.学习和参考,博主只求能和大家共同进步.希望能多多支持! 这篇文章中,我们使用到了Share SDK,它是为iOS.Android.WP8的APP提供社会化功能的一个组件,目前支持如QQ.微信.新浪微博.腾讯微博.开心网.人人网.豆瓣.网易微博.搜狐微博.facebook.twitter.googl

【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料

转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流.学习和参考,博主只求能和大家共同进步.希望能多多支持! 这篇文章中,我们使用到了Share SDK,它是为iOS.Android.WP8的APP提供社会化功能的一

【转】【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料

转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流.学习和参考,博主只求能和大家共同进步.希望能多多支持! 这篇文章中,我们使用到了Share SDK,它是为iOS.Android.WP8的APP提供社会化功能的一

Android Learning:微信第三方登录

这两天,解决了微信第三方授权登录的问题,作为一个新手,想想也是一把辛酸泪.我想着,就把我的遇到的坑给大家分享一下,避免新手遇到我这样的问题能够顺利避开. 步骤一 微信开发者平台 我开始的解决思路是,去微信开发者平台看API文档. 这个API文档的主要意思呢,有三点: 1.你得下载这几样东西(下载链接),一个是他的范例代码,一个是他的签名生成工具. 2.如果你自己的APP想要微信第三方授权,你得去申请一个APPID,这个APPID呢,就是微信给咱们APP分配的一个代号.当然微信不是免费给你服务,为

Android 第三方应用接入微信平台(1)

关键字:微信开放平台   Android第三方应用接入微信 微信平台开放后倒是挺火的,许多第三方应用都想试下接入微信这个平台, 毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的,可 以节约很多在社交方面的开销,我最近由于实习需要也在研究这个东西, 不过发现网上的相关资料还是挺少的,这里把我的整个研究情况给出来,希 望可以共同学习. 一.微信SDK中会用到主要类的类图 上面这张类图中显示的是与微信通信过程中的请求类和响应类,第三方应用通过他们 附带的message字段来携带消息传输给微

Android 第三方应用接入微信平台(2)

微信平台开放后倒是挺火的,许多第三方应用都想试下,毕竟可以利用微信 建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方 面的开销,我最近由于实习需要也在研究这个东西,不过发现网上的相关资 料还是挺少的,这里把我的整个研究情况给出来,希望可以共同学习. 第三方应用接入微信平台(1) 二.第三方应用与微信通信的时序图 2.接收微信的请求信息 前面四步和之前的“1.向微信发送消息”是一样的,不需要重复执行,这里给出来只是为了 流程的整体性.当我们注册后,应用图标会出现在微信聊天的列表中