您的位置:首页 > 其它

使用友盟完成第三方QQ登录,并回传头像等数据

2017-07-14 15:20 465 查看
 

这是自己总结的,可以实现,我做的只是QQ登录

不多说,直接进入主题

先看运行效果

点击button,跳转到登录界面



 授权并登录



登录并返回信息



我总结的东西步骤太多,但是步骤一个不少,步骤很清晰

1:配置需要的东西

1.1 找到友盟官网,并注册,登录

1.2 登录以后进入友盟主页,点击产品---->U-Share



1.3 点击U-Share进入页面后,点击SDK及文档下的Android机器人图标



1.4 进入以后下载所需要的SDK



1.5 下载SDK 根据自己的需求勾选



1.6 下载,解压并打开后,双击友盟集成工具,打开以后勾选自己需要的(我做的是QQ完整版,使用的是Android studio)



 

1.7 点击OK以后会生成一个文件夹



1.8 点开文件夹以后 ,把libs下的jar包导入到工程里的libs中



1.9 把jar包导入到 library中



2.0 把res文件夹下的文件拷入到工程相应的文件夹下



2.1 把生成的debug.keystore 导入到工程中,要和build同级



2.2配置Android Mainfest.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" />


2.3 sdk中需要的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" />
<data android:scheme="tencent100424468" />
</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"/>

<meta-data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >
</meta-data>


2.4 增加签名中的文件

buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.debug
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
signingConfig signingConfigs.debug
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}


2.5  Application中

public class App extends Application {

{   //配置QQappkey
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
}
private UMShareAPI umShareAPI;

private static  App app;

public  static App getApp(){
return app;
}
@Override
public void onCreate() {
super.onCreate();
app=this;
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG);
//初始化sdk
umShareAPI=UMShareAPI.get(this);
}

public UMShareAPI getUmShareAPI() {
return umShareAPI;
}
}


2.6 MainActivity中

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private ImageView image;
private TextView name,city,gender,province;
private Button login;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//点击按钮跳转到登录页面
login = (Button) findViewById(R.id.login);
//需要显示的各个控件
image = (ImageView) findViewById(R.id.iconurl);
name = (TextView) findViewById(R.id.name);
city = (TextView) findViewById(R.id.city);
gender = (TextView) findViewById(R.id.gender);
province = (TextView) findViewById(R.id.province);

login.setOnClickListener(this);
}

@Override
public void onClick(View v) {
App.getApp().getUmShareAPI().doOauthVerify(this,
SHARE_MEDIA.QQ, new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA share_media) {
Toast.makeText(MainActivity.this,"onStart",Toast.LENGTH_SHORT).show();

}

@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
if(i==0){//判断i = 0,只是登录成功,但是获取不到数据
Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
//获取信息
App.getApp().getUmShareAPI().getPlatformInfo(MainActivity.this,
SHARE_MEDIA.QQ,
this);
}
if(i==2){//当i=2/时,获取信息
login.setVisibility(View.GONE);
String imageurl = map.get("iconurl");//头像
String nameString = map.get("name");//昵称
String genderString = map.get("gender");//男女
String cityString = map.get("city");//城市
String provinceString = map.get("province");//省份
x.image().bind(image,imageurl);
name.setText(nameString);
gender.setText(genderString);
city.setText(cityString);
province.setText(provinceString);
}

}

@Override
public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();
}

@Override
public void onCancel(SHARE_MEDIA share_media, int i) {
Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();
}
});

}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
App.getApp().getUmShareAPI().onActivityResult(requestCode,resultCode,data);


2.7 布局文件中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="activ.kuaikan.com.qq.MainActivity"
android:orientation="vertical">

<Button
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="QQ登录"
android:layout_marginTop="40dp"/>
<ImageView
android:id="@+id/iconurl"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/gender"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/city"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content" /><TextView
android:id="@+id/province"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>


拓展



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐