友盟+ 的第三方登录

之前有过一次的第三方登录的demo,今天有做了一次,才发现以前做的是有多么的不堪!

先展示一下第三方登录qq的效果,有两种情况,

第一种,没有弹出授权框,直接获取数据值,---qq头像:


第二种,有授权框,授权以后再获取数据值,---qq头像,qq用户名,等等。。


这两种情况实现很简单,简单到只需要调用俩个方法就行了,方法分别:

umShareAPI.doOauthVerify(MainActivity.this, SHARE_MEDIA.QQ, umAuthListener);有弹出授权框

umShareAPI.getPlatformInfo(UserinfoActivity.this, SHARE_MEDIA.SINA, umAuthListener); 没有弹出授权框,默认授权,直接获取数据

二者可以嵌套配合使用!这里附上为什么要有“第三方授权协议”的原因。

好了,言归正传,这些效果都需要建立在友盟的集成SDK之上,否则一切空谈!SDK的下载见如下操作:

首先打开友盟网址:点击打开链接

注册账号/登陆

完成以后,操作图中步骤:









从最后一张图中的所标识的文件夹中,将jar包复制到你的项目工程中,并生成,到这里,我们的任务应该算是完成了一半!


下面我们就可以到开发文档中粘代码了。回到第二张图


在这里,我只附上我自己写的一个小demo,效果就是上面的动态图中的效果:

package bw.com.rikao0117;

import android.Manifest;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.bean.SHARE_MEDIA;

import java.util.Map;

public class MainActivity extends AppCompatActivity {

    private UMShareAPI umShareAPI;
    private ImageView img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //6.0动态权限
        if(Build.VERSION.SDK_INT>=23){
            String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};
            ActivityCompat.requestPermissions(this,mPermissionList,123);
        }
        //友盟的封装类,实例化对象
        umShareAPI = UMShareAPI.get(MainActivity.this);
        //获取imageviewid
        img = (ImageView) findViewById(R.id.img);
    }


    //设置第三方的授权回调
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }

    //解除关联,解决内存泄漏
    @Override
    protected void onDestroy() {
        super.onDestroy();
        UMShareAPI.get(this).release();
    }

    public void buttonLogin(View view) {

        /**
         *
         * umShareAPI.doOauthVerify(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener());
         * 这个API方法是为了授权给本地,能够弹出授权框
         */


        /**
         * 登录成功后,用来获取qq用户的资料,头像,名字,等等
         *
         * 这个API方法会直接登录第三方qq,它不会弹出授权框,默认已经授权
         */
        umShareAPI.doOauthVerify(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() {
            /**
             * 开始的授权
             * @param share_media
             */
            @Override
            public void onStart(SHARE_MEDIA share_media) {

            }

            /**
             * 授权成功
             * @param share_media
             * @param i
             * @param map
             */
            @Override
            public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {

                umShareAPI.getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener(){

                    @Override
                    public void onStart(SHARE_MEDIA share_media) {

                    }

                    @Override
                    public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
                        Log.i("jiba","platform==="+share_media);

                        String s = map.get("profile_image_url");
                        Log.i("jiba","profile_image_url==="+s);

                        Glide.with(MainActivity.this).load(s).into(img);
                        for (String key:map.keySet()) {
                            Log.i("jiba","onComplete==key="+key+"====value="+map.get(key));
                        }
                    }

                    @Override
                    public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {

                    }

                    @Override
                    public void onCancel(SHARE_MEDIA share_media, int i) {

                    }
                });

            }

            /**
             * 授权失败
             * @param share_media
             * @param i
             * @param throwable
             */
            @Override
            public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {

            }

            /**
             * 授权取消的回调
             * @param share_media
             * @param i
             */
            @Override
            public void onCancel(SHARE_MEDIA share_media, int i) {

            }
        });
    }
}


猜你喜欢

转载自blog.csdn.net/weixin_40430041/article/details/79083696