Android 微信登录
生活随笔
收集整理的這篇文章主要介紹了
Android 微信登录
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/1、首先你得到微信.開(kāi)放平臺(tái)申請(qǐng)開(kāi)發(fā)權(quán)限:https://open.weixin.qq.com/
申請(qǐng)通過(guò)效果如下即可
?
2、其次,閱讀開(kāi)發(fā)文檔:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=5e2b1bed1e22d52b73509b9def8c200bf130fb3f&lang=zh_CN
?
3、接下來(lái)就是Android開(kāi)發(fā)代碼。分三步獲取微信信息,用以登錄
?
3/1常量類(lèi)
public class Constants {// appidpublic static final String APP_ID = "wx1201a018fdcec6";public static final String SECRET = "fc866ba851439dead6a09a480de179";// 商戶號(hào)public static final String MCH_ID = "15171351";/*** 微信開(kāi)放平臺(tái)和商戶約定的支付密鑰** 注意:不能hardcode在客戶端,建議genSign這個(gè)過(guò)程由服務(wù)器端完成*/public static final String APP_KEY = "01b2e2bd220db0c3765609ebc9b59f";}3/2起調(diào)微信登錄
//微信登錄private void wxlogin(){String strState = getPackageName() + String.valueOf(System.currentTimeMillis());String SCOPE = "snsapi_userinfo";IWXAPI api;api = WXAPIFactory.createWXAPI(LiteActivity.this, Constants.APP_ID, false);api.registerApp(Constants.APP_ID);if (!api.isWXAppInstalled()) {Toast.makeText(LiteActivity.this,"請(qǐng)先安裝微信客戶端!",Toast.LENGTH_LONG).show();return;}final SendAuth.Req req = new SendAuth.Req();req.scope = SCOPE;req.state = strState;api.sendReq(req);}3/3獲取微信回調(diào)結(jié)果,微信開(kāi)發(fā)必要activity
/*** 微信分享回調(diào)*/ public class WXEntryActivity extends Activity implements IWXAPIEventHandler {private IWXAPI wxAPI;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);wxAPI = WXAPIFactory.createWXAPI(this, Constants.APP_ID,true);wxAPI.registerApp(Constants.APP_ID);wxAPI.handleIntent(getIntent(), this);}@Overrideprotected void onNewIntent(Intent intent){super.onNewIntent(intent);wxAPI.handleIntent(getIntent(),this);Log.i("ansen","WXEntryActivity onNewIntent");}@Overridepublic void onReq(BaseReq arg0) {Log.i("ansen","WXEntryActivity onReq:"+arg0);}@Overridepublic void onResp(BaseResp resp){if(resp.getType()== ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX){//分享Log.i("ansen","微信分享操作.....");}else if(resp.getType()==ConstantsAPI.COMMAND_SENDAUTH){//登陸SendAuth.Resp authResp = (SendAuth.Resp) resp;String code = authResp.code;TestObServernotice.getInstance().notifyObserver(111, 2, code);Log.i("ansen", "微信登錄操作.....");}finish();} }?配置微信activity
<activityandroid:name=".wxapi.WXEntryActivity"android:configChanges="orientation|keyboardHidden"android:exported="true"android:screenOrientation="portrait"android:windowSoftInputMode="stateHidden|adjustPan"/>?
3/4? resp結(jié)果如下。
請(qǐng)求微信接口
public static final String wxlogurl = "https://api.weixin.qq.com/sns/userinfo"; public static final String wxlogurl2 = "https://api.weixin.qq.com/sns/oauth2/access_token";3/5通過(guò)觀察者模式,回到activity中,根據(jù)code獲取token
請(qǐng)求如下:,這里是asyncHttp框架。你可以使用其他請(qǐng)求網(wǎng)絡(luò)類(lèi)
private void getUserInfo(final String access_token, final String openid) {String url = Url.wxlogurl2;RequestParams params = new RequestParams();params.put("appid", openid);params.put("secret", Constants.SECRET);params.put("code", access_token);params.put("grant_type", "authorization_code");more_loadDialog.setloadtext("登錄中...");more_loadDialog.show();AsyncHttpClient client = new AsyncHttpClient();client.post(url, params, new TextHttpResponseHandler() {@Overridepublic void onFailure(int i, Header[] headers, String s, Throwable throwable) {more_loadDialog.dismiss();Toast.makeText(LiteActivity.this, "網(wǎng)絡(luò)連接異常", Toast.LENGTH_SHORT).show();}@Overridepublic void onSuccess(int i, Header[] headers, String s) {try {more_loadDialog.dismiss();JSONObject object = new JSONObject(s);String at = object.getString("access_token");getUserInfoend(at,Constants.APP_ID);Log.i("lgq", "re==logtest=====" + s);} catch (JSONException e) {e.printStackTrace();}}}); }結(jié)果如下
3/6根據(jù)token獲取微信賬號(hào)詳情
請(qǐng)求如下
private void getUserInfoend(final String access_token, final String openid) {String url = Url.wxlogurl;RequestParams params = new RequestParams();params.put("openid", openid);params.put("access_token", access_token);more_loadDialog.setloadtext("登錄中...");more_loadDialog.show();AsyncHttpClient client = new AsyncHttpClient();client.post(url, params, new TextHttpResponseHandler() {@Overridepublic void onFailure(int i, Header[] headers, String s, Throwable throwable) {more_loadDialog.dismiss();Toast.makeText(LiteActivity.this, "網(wǎng)絡(luò)連接異常", Toast.LENGTH_SHORT).show();}@Overridepublic void onSuccess(int i, Header[] headers, String s) {try {more_loadDialog.dismiss();JSONObject object = new JSONObject(s);Log.i("lgq", "re==logtest=====" + s);} catch (JSONException e) {e.printStackTrace();}}}); }結(jié)果如下:
4、所有微信信息已經(jīng)請(qǐng)求得到了。接下來(lái)就是。需要什么參數(shù)登錄,就使用什么參數(shù)登錄了 !!!!!!
?
觀察者模式類(lèi)TestObServernotice:https://blog.csdn.net/meixi_android/article/details/81016359
?
在線回復(fù)解決bug:qq1085220040
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Android 微信登录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TextView does not su
- 下一篇: Android 自定义操作成功的load