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

来源:互联网 发布:java工作流activity 编辑:程序博客网 时间:2024/04/26 04:08

 

这是自己总结的,可以实现,我做的只是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>

拓展




原创粉丝点击