虽然自己在日常工作中用不到第三方登录,但是它的重要性无可厚非。
废话不多说,接下来跟着步骤走,轻松集成第三方登陆。
一,在友盟注册应用
注册好友盟账户后,在http://www.umeng.com/social 中注册自己的应用 拿到友盟Appkey(记得先创建项目,在注册时package别弄错了...)
二,在腾讯开放平台中注册开发者信息,并注册应用
链接:http://open.qq.com/ 进入后点击移动应用 提交个人(公司)资料注册开发者信息(需要审核等待),通过后再创建移动应用(这里移动应用名称可以和AppName不一致)之后拿到应用的AppId和AppKey
三,开始集成
下载友盟SDK:http://dev.umeng.com/social/android/sdk-download 选择需要用到的平台以及导入方式 然后将Lib导入项目(也可以通过SDKIntegration.jar生成Lib)
接着在AndroidManifest.xml中注册如下信息:
<pre name="code" class="html"><!-- 友盟Appkey -->
<meta-data
android:name="UMENG_APPKEY"
android:value="55ab020d67e58e8404004fe6" />
<activity
android:name="com.umeng.socialize.view.ShareActivity"
android:configChanges="orientation|keyboard"
android:launchMode="singleTask"
android:noHistory="true"
android:theme="@style/Theme.UMDialog"
android:windowSoftInputMode="stateVisible|adjustResize" />
<!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ -->
<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" />
<!-- 100424468,如果你使用的公用账号,则不需要修改;否则修改成你在QQ开放平台申请的 APP ID-->
<data android:scheme="tencent100424468" />
</intent-filter>
</activity>
<activity android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:screenOrientation="portrait">
</activity>
然后在Activity初始化时 加入:
//UMQQSsoHandler(Activity activity, String appId, String appKey)
UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(ThirdPartyLandingActivity.this, "1104705065",
"7vK8SAM2TtHfeLVC");
qqSsoHandler.addToSocialSDK();
接着登录按钮点击事件 加入:
public void onClick(View v) {
mController = UMServiceFactory.getUMSocialService("com.umeng.login");
mController.doOauthVerify(ThirdPartyLandingActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
Toast.makeText(ThirdPartyLandingActivity.this, "授权开始", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(SocializeException e, SHARE_MEDIA platform) {
Toast.makeText(ThirdPartyLandingActivity.this, "授权失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(Bundle value, SHARE_MEDIA platform) {
if (value != null && !TextUtils.isEmpty(value.getString("uid"))) {
Toast.makeText(ThirdPartyLandingActivity.this, "授权成功.", Toast.LENGTH_SHORT).show();
mController.getPlatformInfo(ThirdPartyLandingActivity.this, SHARE_MEDIA.QQ, new UMDataListener() {
@Override
public void onStart() {
Toast.makeText(ThirdPartyLandingActivity.this, "获取平台数据开始...", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(int status, Map<String, Object> info) {
//status为登录状态,info为登录信息
if(status == 200 && info != null){
StringBuilder sb = new StringBuilder();
Set<String> keys = info.keySet();
for(String key : keys){
sb.append(key+"="+info.get(key).toString()+"\r\n");
}
Toast.makeText(ThirdPartyLandingActivity.this, "登陆信息: \n"+sb.toString(), Toast.LENGTH_LONG).show();
}else{
Log.d("TestData","发生错误:"+status);
}
}
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(ThirdPartyLandingActivity.this, "授权取消", Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(ThirdPartyLandingActivity.this, "授权失败", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(ThirdPartyLandingActivity.this, "授权取消", Toast.LENGTH_SHORT).show();
}
});
}
到了这里 基本大功告成 。最后别忘了在 AndroidManifest.xml加入网络访问等权限...
<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.CALL_PHONE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- renren sso Permission for Unit Test -->
<!-- QQ、QQ空间所需权限 -->
<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" />
运行效果:http://wap.youshixiu.com/video/play/198338