• Android 使用第三方登录(QQ和新浪微博)


    账号申请什么的我就在这里略过了!(相信大家看看文档都能够处理的)本篇博客仅作引导用--主要提供给哪些不知道怎样入手的朋友。(如果需要更加强大的功能大家可以看一下开放平台上的文档,上面都有的)

    使用QQ登录需要在QQ互联开放平台上注册一个账号并提交审核:http://connect.qq.com/intro/login

    使用新浪微博登录需要到新浪微博开放平台注册账号:http://open.weibo.com/development/mobile

    新浪微博登录的处理代码:(需要下载新浪微博的SDK)

    import java.io.ByteArrayOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.widget.Toast;
    
    import com.hd.client.BindActivity;
    import com.sina.weibo.sdk.auth.Oauth2AccessToken;
    import com.sina.weibo.sdk.auth.WeiboAuthListener;
    import com.sina.weibo.sdk.auth.WeiboAuth.AuthInfo;
    import com.sina.weibo.sdk.exception.WeiboException;
    import com.sina.weibo.sdk.net.RequestListener;
    import com.sina.weibo.sdk.widget.LoginButton;
    
    
    
    
    /**
     * 新浪微博登录工具类
     * @author yw-tony
     *
     */
    public class SinaLoginUtil {
        private static final String appkey = "你的appkey";
        // http://www.sina.comhttp://www.fortrun.com
        private static final String redirectUrl = "http://www.fortrun.com";
        private static final String SCOPE = "email,direct_messages_read,direct_messages_write,"
                + "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
                + "follow_app_official_microblog," + "invitation_write";
        /** 登陆认证对应的listener */
        private AuthListener mLoginListener = new AuthListener();
        /** 登出操作对应的listener */
        private LogOutRequestListener mLogoutListener = new LogOutRequestListener();
        private Context context;
        private AuthInfo authInfo = null;
        public String token = ",";private SinaLoginUtil(){}
        private static SinaLoginUtil instance = new SinaLoginUtil();
        public static SinaLoginUtil getInstance(){
            return instance;
        }
        public void initSina(Context context,LoginButton loginButton){
            this.context = context;
            // 创建授权认证信息
            authInfo = new AuthInfo(context, "你的appkey",redirectUrl, SCOPE);
            loginButton.setWeiboAuthInfo(authInfo, mLoginListener);
        }
        /**
         * 登入按钮的监听器,接收授权结果。
         */
        private class AuthListener implements WeiboAuthListener {
            @Override
            public void onComplete(Bundle values) {
                final Oauth2AccessToken accessToken = Oauth2AccessToken.parseAccessToken(values);
                if (accessToken != null && accessToken.isSessionValid()) {
                    /*String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(
                            new java.util.Date(accessToken.getExpiresTime()));*/
    //                String format = getString(R.string.weibosdk_demo_token_to_string_format_1);
    //                mTokenView.setText(String.format(format, accessToken.getToken(), date));
                    AccessTokenKeeper.writeAccessToken(context, accessToken);
                }
            }
           
        /**
         * 登出按钮的监听器,接收登出处理结果。(API 请求结果的监听器)
         */
        private class LogOutRequestListener implements RequestListener {
            @Override
            public void onComplete(String response) {
                if (!TextUtils.isEmpty(response)) {
                    try {
                        JSONObject obj = new JSONObject(response);
                        String value = obj.getString("result");
    
                        if ("true".equalsIgnoreCase(value)) {
                            AccessTokenKeeper.clear(context);
    //                        mTokenView.setText(R.string.weibosdk_demo_logout_success);
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
            
            @Override
            public void onComplete4binary(ByteArrayOutputStream responseOS) {
                // Do nothing
            }        
            
            @Override
            public void onIOException(IOException e) {
    //            mTokenView.setText(R.string.weibosdk_demo_logout_failed);
            }
    
            @Override
            public void onError(WeiboException e) {
    //            mTokenView.setText(R.string.weibosdk_demo_logout_failed);
            }
        }
    }

    QQ登录:

    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.AsyncTask;
    import android.util.Log;
    import android.widget.Toast;
    
    import com.google.gson.JsonObject;
    import com.hd.client.BindActivity;
    import com.tencent.tauth.IUiListener;
    import com.tencent.tauth.Tencent;
    import com.tencent.tauth.UiError;
    
    
    /**
     * 使用QQ登陆工具类
     * @author yw-tony
     *
     */
    public class QQLoginUtil {
        public String token = ",";
        public Tencent tencen = null;
        private static String APP_ID = "你的Appid";
        private Context context;
        private QQLoginUtil(){}
        private static QQLoginUtil instance = new QQLoginUtil();
        public static QQLoginUtil getInstance(){
            return instance;
        }
        
        public void initTencen(Context context){
            tencen = Tencent.createInstance(APP_ID, context);
            this.context = context;
        }
        
        public void qqLogin(Activity activity){
            if (!tencen.isSessionValid()) {
                IUiListener listener = new BaseUiListener() {
                    @Override
                    protected void doComplete(JSONObject values) {
                        /*updateUserInfo();
                        updateLoginButton();*/
                    }
                };
                tencen.login(activity, "all", listener);
            } else {
                tencen.logout(activity);
    //            updateUserInfo();
    //            updateLoginButton();
            }
        }
        private class BaseUiListener implements IUiListener {
    
            @Override
            public void onComplete(JSONObject response) {
    //            Util.showResultDialog(MainActivity.this, response.toString(), "登录成功");
                Log.e("响应字符串", response.toString());
                doComplete(response);
            }
    
            protected void doComplete(final JSONObject values) {
                
            }
    
            
            @Override
            public void onError(UiError e) {
                Log.e("错误信息", e.errorDetail);
    //            Util.toastMessage(MainActivity.this, "onError: " + e.errorDetail);
    //            Util.dismissDialog();
            }
    
            @Override
            public void onCancel() {
                Log.e("取消了当前的登录操作", "取消了当前的登录操作");
    //            Util.toastMessage(context, "onCancel: ");
    //            Util.dismissDialog();
            }
        }
    }
  • 相关阅读:
    dataTables的导出Excel功能
    jquery生成二维码图片
    angular2表单初体验
    台湾辅仁大学的python教程笔记
    浅说《测试用例》----给测试新手的
    测试员的工作与学习
    简单的表格代码
    特殊效果字体代码
    办公自动化的基本方法
    css网页的几种类型
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/3509351.html
Copyright © 2020-2023  润新知