第三方QQ登陆详解



在友盟中下载QQ的SDK:

http://bbs.umeng.com/portal.php

SDK文件目录介绍

  • main -- 核心库

umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar

  • platforms -- 分享平台库

QQ精简版(SocialSDK_QQ_Simplify.jar)

这里只列举QQ、最终platforms文件夹内包含的文件与下载页面选择的平台有关

  • shareboard

umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加) 
umeng_social_shareboard.jar

拷贝jar及res

拷贝jar和res有如下两种形式

a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程

修改AndroidManiFest

首先需要添加权限:
<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" />

然后加入sdk中需要的Activity:

qq精简版:

   <activity
    android:name="com.umeng.qq.tencent.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.umeng.qq.tencent.AssistActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

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" />//腾讯开放平台申请的key值
            </intent-filter>

    </activity>

    <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"/>

添加友盟appkey
    <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" >//友萌APP的KEy
    </meta-data>

在application文件中配置三方平台的appkey:

这里作为示例,只配置了微信、QQ/Qzone、新浪的三方appkey,如果使用其他平台,在这里增加对应平台key配置

public class App extends Application{
    {
	//此处红色标注的是你在QQ平台上请求的ID与KEY

	PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
   }    

在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:

        @Override
        public void onCreate() {
        super.onCreate();
        UMShareAPI.get(this);
    }

 
 
}

·············记得在清单文件中注册Application哦


2.  获取用户信息

	protected void onCreate(Bundle savedInstanceState) {
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
   		 super.onCreate(savedInstanceState);
   		 setContentView(R.layout.activity_main);
   		 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
      	
           	 UMShareAPI.get(MainActivity.this).getPlatformInfo(MainActivity.this,
		 SHARE_MEDIA.QQ, umAuthListener);
       		 
  

}

其中umAuthListener为授权回调,构建如下,其中授权成功会回调onComplete,取消授权回调onCancel,授权错误回调onError,对应的错误信息可以用过onError的Throwable参数来打印


 
 
private UMAuthListener umAuthListener = new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
//授权开始的回调
}
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
Set<String> set = data.keySet();
SharedPreferences qq = getSharedPreferences("QQ", MODE_PRIVATE);
SharedPreferences.Editor edit = qq.edit();
for (String string : set) {
String str = data.get(string);
// 设置头像
String touxiang = data.get("profile_image_url");
edit.putString("头像",touxiang);
// 设置昵称
String nicheng = data.get("screen_name");
edit.putString("昵称",nicheng);
edit.putBoolean("状态",true);
edit.commit();
if (string.equals("province")) {
}
if (string.equals("city")) {
}
if (string.equals("gender")) {
}
if (string.equals("uid")) {
}
if (string.equals("yellow_vip_level")) {
}
}
		Intent intentqq=new Intent(MainActivity.this,MainActivityQQ.class);
// Toast.makeText(MainActivityQQ.this,"QQ已授权登录",Toast.LENGTH_SHORT).show();
finish();
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText( getApplicationContext(), "授权错误", Toast.LENGTH_SHORT).show();
}

@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText( getApplicationContext(), "授权失败", Toast.LENGTH_SHORT).show();
}
};

onActivityResult实现方法如下:

@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

    }

可以在退出登录状态的时候添加如下代码    可以取消授权   避免App只可以登录一个QQ号
也可自己设置点击事件退出登录
 
 
@Override
protected void onDestroy() {  
super .onDestroy();  
UMShareAPI. get (MainActivity. this ).
deleteOauth(MainActivity. this , SHARE_MEDIA. QQ , null );
}

 

3.  用户资料基本信息解析如下

在返回的map中各个信息对应的key值如下

 qq:

name:name(6.2以前用screen_name)

用户id:uid

accesstoken: accessToken (6.2以前用access_token)

过期时间:expiration (6.2以前用expires_in)

性别:gender

头像:iconurl(6.2以前用profile_image_url)

是否黄钻:is_yellow_year_vip

黄钻等级:yellow_vip_level

城市:city

省份:province

QQ目前uid暂时无法实现多个应用间打通操作,但QQ预留了unionID字段,但获取此字段需要单独和腾讯申请权限,邮箱connect@qq.com


报错必看

http://bbs.umeng.com/thread-17764-1-1.html

当你有如下提示的时候,说明你缺少对应的资源文件,
 
根据提示,缺少资源文件:

packageName=com.umeng.soexample type=string name=umeng_socialize_male

表明你缺少的文件类型,可能是string,drawable,layout等资源类型,你只需要在你下载的包中对应的string文件或布局文件的文件夹中去找即可。

请去sdk下载包的路径下:umeng_android_social_sdk_6.4.3_custom\main\res\values

拷贝所有文件到自己工程的values中。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值