应用的提交审核需要的资料,签名等,微信或者友盟都有资料介绍。或者参考我的上一篇博客写的新浪微博的:http://blog.csdn.net/qq_16064871/article/details/50083807。
<!-- 微信回调activity 一定要是app的package包名--> <activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
虽然友盟都建议,友盟开发包建成工程,最后引用这个这个友盟的工程。但这样做势必会造成引用这个工程的app包名跟 android:name=".wxapi.WXEntryActivity"这前面的包名不一样(app的包名+.wxapi.WXEntryActivity)而不是(友盟工程的包名+.wxapi.WXEntryActivity)。
所以这个空的WXEntryActivity还是要放在使用app的项目中,WXEntryActivity.class的完整路径应该是app的包名+.wxapi.WXEntryActivity。还有上面那个activity注册其他配置要一模一样。
这就是大多数人友盟的微信登陆回调没有用户信息返回的原因。就是没有执行到onComplete。
1、WXEntryActivity这个类里面什么都不用写。友盟帮我们写好了。就如下:
import com.umeng.socialize.weixin.view.WXCallbackActivity; public class WXEntryActivity extends WXCallbackActivity { }
// 整个平台的Controller,负责管理整个SDK的配置、操作等处理 private UMSocialService mController = UMServiceFactory .getUMSocialService("com.umeng.login"); private void addWXPlatform() { // 注意:在微信授权的时候,必须传递appSecret // wx967daebe835fbeac是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID String appId = "wx....."; String appSecret = "gdfg......"; // 添加微信平台 UMWXHandler wxHandler = new UMWXHandler(LoginActivity.this, appId, appSecret); wxHandler.setRefreshTokenAvailable(true); wxHandler.addToSocialSDK(); }
//登录微信调用 login(SHARE_MEDIA.WEIXIN); //注销微信登录 logout(SHARE_MEDIA.WEIXIN);
/** * 授权。如果授权成功,则获取用户信息 * * @param platform */ private void login(final SHARE_MEDIA platform) { mController.doOauthVerify(LoginActivity.this, platform, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA platform) { Toast.makeText(LoginActivity.this, "授权开始", Toast.LENGTH_SHORT).show(); } @Override public void onError(SocializeException e, SHARE_MEDIA platform) { Toast.makeText(LoginActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } @Override public void onComplete(Bundle value, SHARE_MEDIA platform) { Toast.makeText(LoginActivity.this, "授权完成", Toast.LENGTH_LONG).show(); // 获取uid String uid = value.getString("uid"); if (!TextUtils.isEmpty(uid)) { // uid不为空,获取用户信息 getUserInfo(platform); } else { Toast.makeText(LoginActivity.this, "授权失败...", Toast.LENGTH_LONG).show(); } } @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(LoginActivity.this, "授权取消", Toast.LENGTH_SHORT).show(); } }); } /** * 获取用户信息 * * @param platform */ private void getUserInfo(SHARE_MEDIA platform) { mController.getPlatformInfo(LoginActivity.this, platform, new UMDataListener() { @Override public void onStart() { } @Override public void onComplete(int status, Map<String, Object> info) { // String showText = ""; // if (status == StatusCode.ST_CODE_SUCCESSED) { // showText = "用户名:" + // info.get("screen_name").toString(); // Log.d("#########", "##########" + info.toString()); // } else { // showText = "获取用户信息失败"; // } if (info != null) { Toast.makeText(LoginActivity.this, info.toString(),Toast.LENGTH_SHORT).show(); } } }); } /** * 注销本次登陆 * @param platform */ private void logout(final SHARE_MEDIA platform) { mController.deleteOauth(LoginActivity.this, platform, new SocializeClientListener() { @Override public void onStart() { } @Override public void onComplete(int status, SocializeEntity entity) { String showText = "解除" + platform.toString() + "平台授权成功"; if (status != StatusCode.ST_CODE_SUCCESSED) { showText = "解除" + platform.toString() + "平台授权失败[" + status + "]"; } Toast.makeText(LoginActivity.this, showText, Toast.LENGTH_SHORT).show(); } }); }
到这里结束了,欢迎评论留下你的友盟开发之微信的疑问,我尽量帮你们解答。。。