我们要集成第三方QQ授权登陆我们就要进入友盟第三方频道下载SDK 点击我下载Sdk ,
我们也可以进入平台在我给大家做的截图顺序根据图片一次执行
第二步
第三步
第四步
第五步
看懂了吗?这一经是很详细的了,可以直接下载SDk在面《点击我》
接下来就开始实现QQ授权登陆的配置
将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程libs文件中,QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
配置Android Manifest 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.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" />
Android Manifest XML 需要的Activity
<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:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
添加友盟appkey
<meta-data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >
</meta-data>
将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore
建立一个application文件,注意要在AndroidManifest文件中配置(如果本身已有,不需要重新建立)在Oncreate中初始化:
public class App extends Application {
{
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
}
@Override
public void onCreate() {
super.onCreate();
UMShareAPI.get(this);
}
}
三方登录集成
获取用户信息
获取用户资料之前需要工程配置,请参考配置文档 授权中只是能拿到uid,openid,token这些授权信息,想获取用户名和用户资料,需要使用这个接口
mShareAPI.getPlatformInfo(UserinfoActivity.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) {
Toast.makeText(getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();
}
};
最后在登录所在的Activity里复写onActivityResult方法,注意不可在fragment中实现,如果在fragment中调用登录,在fragment依赖的Activity中实现,如果不实现onActivityResult方法,会导致登录或回调无法正常进行
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
UShare封装后字段名
uid 用户唯一标识 如果需要做跨APP用户打通,QQ需要使用unionID实现
name 用户昵称
gender 用户性别 该字段会直接返回男女
iconurl 用户头像
根据以上要求实现就能可以实现QQ授权登陆在在授权回调的几个方法中做操作
在授权成功方法中我们就可以获得授权成功返回的用户信息头像和昵称等等