您的位置:首页 > 移动开发 > 微信开发

微信第三方登录(Android 实现)

2016-09-13 17:28 681 查看

1.开发准备工作

1.参考Android 接入指南

1.申请你的AppID

2.下载微信终端开发工具包



根据app包名生成ap

2.代码实践

1.判定客户端是否装有微信,没有则提醒需要安装微信

private void loginWeixin() {

if (!isAvilable(LoginActivity.this, "com.tencent.mm")) {
DialogHelper.createInfoDialog(LoginActivity.this,
"还未安装微信客户端哟.", null, "知道了", new InfoDialog.IButtonInterface() {
@Override
public void clickSureButton() {

}

@Override
public void clickCannelButton() {

}
});
return;
}

WXEntryActivity.isFirst = false;

showProgressDialogForRequest("正在登录中...");
Intent intent = new Intent(LoginActivity.this,
WXEntryActivity.class);
startActivity(intent);
}


2.AndroidManifest 里面通过meta-data方式 配置appid appkey,这两个值是通过微信开发平台添加应用生成的。代码通过获取metadata获取这两个值。

<meta-data
android:name="weixinappid"
android:value="xxxxxx" />
<meta-data
android:name="weixinappkey"
android:value="xxxxx" />


try {
ApplicationInfo info = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
String appidtemp = (String) info.metaData.get("weixinappid");
String appkeytemp = (String) info.metaData.get("weixinappkey");
if (appidtemp != null && !appidtemp.trim().equals("")) {
APP_ID = appidtemp;
}
if (appkeytemp != null && !appkeytemp.trim().equals("")) {
APP_KEY = appkeytemp;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Toast.makeText(context, "微信APP_ID或APP_KEY配置有问题", Toast.LENGTH_LONG)
.show();
}


3.引入微信登录相关SDK到项目的lib文件夹中,就一个文件:

libammsdk.jar

4.注册app,初始化回调。

private void initWeixinSDK(Activity context) {
api = WXAPIFactory.createWXAPI(context, APP_ID, true);
api.registerApp(APP_ID);
initWeixinIntent(context.getIntent(), WeiXinHelper.this);
}

public void initWeixinIntent(Intent intent,
IWXAPIEventHandler wxapEventHandler) {
if (api != null) {
api.handleIntent(intent, wxapEventHandler);
}
}


5.定义个不显示的activity 进行微信申请用户授权,和接收返回操作。

WXEntryActivity 参考微信开放平台提供的demo

<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/transparent">
<intent-filter>
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<data android:scheme="sdksample" />
</intent-filter>
</activity>


6. 申请用户授权

SendAuth.Req req = new SendAuth.Req();

//授权读取用户信息
req.scope = "snsapi_userinfo";

//自定义信息
req.state = "wechat_sdk_demo_test";

//向微信发送请求
api.sendReq(req);


7.在onResp方法中获取到code,然后通过下面的接口获取到token和openid:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

openid可以作为用户的唯一标识,将openid保存下来,就可以实现登录状态的检查了。

8.如果需要获取用户的信息,例如昵称,头像,可以使用下面的接口:

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

3.参考链接

http://my.oschina.net/crazymus/blog/521164

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=85bd15629adce47595c611da7ea0f157b957094a&lang=zh_CN
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: