Android 微信登入
阿新 • • 發佈:2018-12-18
申請通過效果如下即可
2、其次,閱讀開放文件:
3、接下來就是Android開放程式碼。非常簡單
3/1常量類
public class Constants { // appid public static final String APP_ID = "wx1201a018fdcec6"; public static final String SECRET = "fc866ba851439dead6a09a480de179"; // 商戶號 public static final String MCH_ID = "15171351"; /** * 微信開放平臺和商戶約定的支付金鑰 * * 注意:不能hardcode在客戶端,建議genSign這個過程由伺服器端完成 */ public static final String APP_KEY = "01b2e2bd220db0c3765609ebc9b59f"; }
3/2起調微信登入
//微信登入 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,"請先安裝微信客戶端!",Toast.LENGTH_LONG).show(); return; } final SendAuth.Req req = new SendAuth.Req(); req.scope = SCOPE; req.state = strState; api.sendReq(req); }
3/3獲取微信回撥結果,微信開發必要activity
/** * 微信分享回撥 */ public class WXEntryActivity extends Activity implements IWXAPIEventHandler { private IWXAPI wxAPI; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); wxAPI = WXAPIFactory.createWXAPI(this, Constants.APP_ID,true); wxAPI.registerApp(Constants.APP_ID); wxAPI.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent){ super.onNewIntent(intent); wxAPI.handleIntent(getIntent(),this); Log.i("ansen","WXEntryActivity onNewIntent"); } @Override public void onReq(BaseReq arg0) { Log.i("ansen","WXEntryActivity onReq:"+arg0); } @Override public 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(); } }
3/4 resp結果如下。
請求微信介面
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根據code獲取token
請求如下:,這裡是asyncHttp框架。你可以使用其他請求網路類
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() { @Override public void onFailure(int i, Header[] headers, String s, Throwable throwable) { more_loadDialog.dismiss(); Toast.makeText(LiteActivity.this, "網路連線異常", Toast.LENGTH_SHORT).show(); } @Override public 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(); } } }); }
結果如下
3/6根據token獲取微信賬號詳情
請求如下
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() { @Override public void onFailure(int i, Header[] headers, String s, Throwable throwable) { more_loadDialog.dismiss(); Toast.makeText(LiteActivity.this, "網路連線異常", Toast.LENGTH_SHORT).show(); } @Override public 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(); } } }); }
結果如下:
4、所有微信資訊已經請求得到了。接下來就是。需要什麼引數登入,就使用什麼引數登入了 !!!!!!
線上回覆解決bug:qq1085220040