友盟第三方登录集成
集成准备
获取Appkey
集成【友盟+】SDK之前,您首先需要到 【友盟+】官网注册并且添加新应用,获得Appkey。
权限配置:
<!-- 第三方登录集成使用的权限 --> <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.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!-- QQ完整版 --> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 微信 --> <activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 添加友盟appkey -->
注意:是自己注册并且添加新应用,获得Appkey
android:value="--自己的key--" 与Activity同级
<meta-data android:name="UMENG_APPKEY" android:value="5ac04640b27b0a593b000695" />
1.集成友盟SDK 解压后如图
2.使用友盟集成工具生成自己想得到的jar包
将自动生成的代码copy到项目
授权登陆,首先要在Application中配置
{ PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3"); PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com"); } @Override public void onCreate() { super.onCreate(); //开启debug模式,方便定位错误,具体错误检查方式可以查看http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式 Config.DEBUG = true; QueuedWork.isUseThreadPool = false; UMShareAPI.get(this); }
注意:新浪配置回调和微信配置回调 微信回调类最好放在wxapi文件夹下虽然这两个类是空的 但必须配置
新浪 :
import com.umeng.socialize.media.WBShareCallBackActivity; public class WBShareActivity extends WBShareCallBackActivity { }
微信:
import com.umeng.weixin.callback.WXCallbackActivity; //import com.umeng.socialize.weixin.view.WXCallbackActivity; public class WXEntryActivity extends WXCallbackActivity { }
在第三方登录的MainActivity中:
/** * 友盟配置 */ private void youmengConfig() { UMShareConfig config = new UMShareConfig(); config.isNeedAuthOnGetUserInfo(true); UMShareAPI.get(LoginRegisterActivity.this).setShareConfig(config); //权限适配
if (Build.VERSION.SDK_INT >= 23) { String[] mPermissionList = new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE, Manifest.permission.READ_LOGS, Manifest.permission.READ_PHONE_STATE,Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.SET_DEBUG_APP, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_APN_SETTINGS }; ActivityCompat.requestPermissions(this, mPermissionList, 123); }}
QQ登录点击事件中
UMShareAPI.get(LoginRegisterActivity.this) .getPlatformInfo(LoginRegisterActivity.this, SHARE_MEDIA.QQ, authListener);
//获取用户资料授权 private UMAuthListener authListener = new UMAuthListener() { private String name; private String image_url; /** * @param platform 平台名称 * @desc 授权开始的回调 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param data 用户资料返回 * @desc 授权成功的回调 */ @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { Toast.makeText(LoginRegisterActivity.this, "成功了", Toast.LENGTH_LONG).show();
//得到用户资料
Set<String> set = data.keySet(); for (String string : set) { // 设置头像 if (string.equals("profile_image_url")) { image_url = data.get(string); Log.i("-------image", image_url); } // 设置昵称 if (string.equals("screen_name")) { name = data.get(string); } }
}
/** * @desc 授权失败的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(LoginRegisterActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @desc 授权取消的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 */ @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(LoginRegisterActivity.this, "取消了", Toast.LENGTH_LONG).show(); } };
/** * @desc 回调方法 */
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }