Button wxSignInButton=(Button) findViewById(R.id.
wx_sign_in_button
);
wxSignInButton.setOnClickListener(
new
OnClickListener() {
@Override
public void
onClick(View view) {
final
SendAuth.Req req =
new
SendAuth.Req();
req.
scope
=
"snsapi_userinfo"
;
req.
state
=
"wechat_sdk_demo_test"
;
GlobalApplication.
getInstance
().
iwxapi
.sendReq(req);
}
});
public class
WXEntryActivity
extends
Activity
implements
IWXAPIEventHandler{
private static final int
RETURN_MSG_TYPE_LOGIN
=
1
;
private static final int
RETURN_MSG_TYPE_SHARE
=
2
;
@Override
protected void
onCreate(
@Nullable
Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
必须调用此句话,否则回调不起作用
GlobalApplication.
getInstance
().
iwxapi
.handleIntent(getIntent(),WXEntryActivity.
this
);
}
@Override
public void
onReq(BaseReq baseReq) {
switch
(baseReq.getType()) {
case
ConstantsAPI.
COMMAND_GETMESSAGE_FROM_WX
:
break
;
case
ConstantsAPI.
COMMAND_SHOWMESSAGE_FROM_WX
:
break
;
default
:
break
;
}
}
@Override
public void
onResp(com.tencent.mm.opensdk.modelbase.BaseResp baseResp) {
Toast.
makeText
(
this
,
"baseresp.getType = "
+ baseResp.getType(), Toast.
LENGTH_SHORT
).show();
switch
(baseResp.
errCode
) {
case
com.tencent.mm.opensdk.modelbase.BaseResp.ErrCode.
ERR_OK
:
switch
(baseResp.getType()) {
case
RETURN_MSG_TYPE_LOGIN
:
//拿到了微信返回的code,立马再去请求access_token
String code = ((SendAuth.Resp) baseResp).
code
;
try
{
//获取access_token为http get请求
String res= OkhttpUtils.
getSyncAsString
(
"https://api.weixin.qq.com/sns/oauth2/access_token?appid=AppID&secret=AppSecret&code=";
+ code +
"&grant_type=authorization_code"
);
Toast.
makeText
(
this
, res, Toast.
LENGTH_LONG
).show();
}
catch
(IOException e) {
e.printStackTrace();
}
Toast.
makeText
(
this
, code, Toast.
LENGTH_LONG
).show();
//就在这个地方,用网络库什么的或者自己封的网络api,发请求去咯,注意是get请求
break
;
case
RETURN_MSG_TYPE_SHARE
:
break
;
}
break
;
case
com.tencent.mm.opensdk.modelbase.BaseResp.ErrCode.
ERR_USER_CANCEL
:
break
;
case
com.tencent.mm.opensdk.modelbase.BaseResp.ErrCode.
ERR_AUTH_DENIED
:
break
;
case
com.tencent.mm.opensdk.modelbase.BaseResp.ErrCode.
ERR_UNSUPPORT
:
break
;
default
:
break
;
}
}
}
四、微信登录、分享等一些需要注意的问题
微信第三方登录、分享等代码写起来不多也不难,但需要遵循腾讯规定的步骤严格执行,在做的过程有如下问题需要注意:
1、AppID和AppSecret必须和平台一致
2、签名需要保持一致,对于签名的生成的问题可以查看 文章链接地址“
Android集成微信分享功能应用签名生成方法及分享不生效的问题
”