试用友盟SDK实现Android第三方登录(以QQ登录为例)

   虽然自己在日常工作中用不到第三方登录,但是它的重要性无可厚非。

   废话不多说,接下来跟着步骤走,轻松集成第三方登陆。


一,在友盟注册应用

   注册好友盟账户后,在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




   

猜你喜欢

转载自blog.csdn.net/dengyanyi11/article/details/47082247