第三方微信登录,授权获取用户信息,总是回调不成功,解决了大半天,现在把步骤记录下来,方便下回再次使用
1.配置友盟的jar包
上面两个是关于微信的jar包
2.Android中注册文件的配置
权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
绑定友盟
<meta-data
android:name="UMENG_APPKEY"
android:value="57b。。。。。34e4" > AppKey
</meta-data>
回调的文件WXEntryActivity,需要在注册文件中注册
<activity android:name=".wxapi.WXEntryActivity" 回调的文件,由友盟提供 android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.umeng.socialize.editorpage.ShareActivity" android:excludeFromRecents="true" android:theme="@style/Theme.UMDefault" />
注意 WXEntryActivity 这个文件的路径,与当前项目的路径保持一致
3.准备调用
设置微信平台,第一个参数AppId,第二个参数AppSecret
PlatformConfig.setWeixin("wx71.......4779", "........97c7d448129");
声明
public UMShareAPI mShareAPI= UMShareAPI.get(this);
调取微信授权页面,第二个参数平台类型(是qq,微博还是其他),第三个参数回调方法
mShareAPI.doOauthVerify(MainActivity.this, SHARE_MEDIA.WEIXIN, new UMAuthListener() { @Override public void onComplete (SHARE_MEDIA share_media, int i, Map<String, String> map) { Log.i("doOauthVerifyonComplete", map.toString()); Toast.makeText(MainActivity.this, "onComplete", Toast.LENGTH_SHORT).show(); mShareAPI.getPlatformInfo(MainActivity.this, share_media, new UMAuthListener() {}
doOauthVerify()是获取平台授权的方法
getPlatformInfo()方法是获取用户信息的方法在
getPlatformInfo()方法放在doOauthVerify()方法的UMAuthListener的回调方法的onComplete()中进行调用
最主要的是包名一定与微信平台注册的相对应
这个包的名字与注册文件中的包名一定要对应,否则回调不成功