`

tencent API(一) 登录/校验登录态

阅读更多

1.     登录/校验登录态

       通过调用Tencent类的login函数发起登录/校验登录态。

该API具有两个作用:
(1)如果开发者没有调用mTencent实例的setOpenId、setAccessToken API,则该API执行正常的登录操作;
(2)如果开发者先调用mTencent实例的setOpenId、setAccessToken API,则该API执行校验登录态的操作。如果登录态有效,则返回成功给应用,如果登录态失效,则会自动进入登录流程,将最新的登录态数据返回给应用。
建议开发者在每次应用启动时调用一次该API(先调用setOpenId、setAccessToken),以确保每次打开应用时用户都是有登录态的。

      调用登录API参数说明如下:

参数 参数说明
activity 调用者activity。应用使用SDK时,会从应用自己的Activity跳转到SDK的Activity,应用调用SDK的Activity即为这里的调用者activity。
scope 应用需要获得哪些API的权限,由“,”分隔。

例如:SCOPE = “get_user_info,add_topic”;如果要所有,直接用all

listener 回调API,IUiListener实例。

     基本流程就是

      

 所以第一步就是自定义一个Activity:

             

/**
 * 登入验证
 * 
 * @author tanlvxu
 * 
 */
public class MainActivity extends Activity implements OnClickListener{
	/**
	 * api权限
	 */
	private Handler mHandler;
	private TextView mBaseMessageText;//打印登入后读取的base信息
	private TextView mMessageText;//打印登入后读取的message信息
	private Dialog mProgressDialog; //判断是否接收到信息
	private Tencent mTencent; //主控制
	private EditText mEtAppid = null;// 账号输入框
	private ImageView mLoginButton;// 登入按钮
	/**
	 * 线程接收
	 * @param base
	 * @param msg
	 */
	private void showResult(final String base, final String msg) {
		mHandler.post(new Runnable() {

			@Override
			public void run() {
				if (mProgressDialog.isShowing())
					mProgressDialog.dismiss();
				mBaseMessageText.setText(base);
				mMessageText.setText(msg);
			}
		});
	}
	/**
	 * 信息接收类
	 * @author tanlvxu
	 *
	 */
	private class BaseUiListener implements IUiListener {

		@Override
		public void onComplete(Object response) {
			showResult("onComplete:", response.toString());
			doComplete(response);
		}

		protected void doComplete(Object values) {

		}

		@Override
		public void onError(UiError e) {
			showResult("onError:", "code:" + e.errorCode + ", msg:"
					+ e.errorMessage + ", detail:" + e.errorDetail);
		}

		@Override
		public void onCancel() {
			showResult("onCancel", "");
		}
	}

	/**
	 * 主函数
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		final Context ctxContext = this.getApplicationContext();
		mEtAppid = new EditText(this);
		/**
		 * app_id输入框
		 */
		new AlertDialog.Builder(this)
        .setTitle("请输入APP_ID")
        .setCancelable(false)
        .setIcon(android.R.drawable.ic_dialog_info)
        .setView(mEtAppid)
        
        .setNegativeButton("取消",
                new android.content.DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog,
                            int which) {
                        // TODO Auto-generated method stub
                        mTencent = Tencent.createInstance(AppConstants.APP_ID, ctxContext);
                        mHandler = new Handler();
                        mProgressDialog = new ProgressDialog(
                                MainActivity.this);
                        initViews();
                    }
                })
                .setPositiveButton("确定",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog,
                            int which) {
                        String appid = mEtAppid.getText().toString()
                                .trim();
                        if (!("".equals(appid))) {
                            mTencent = Tencent.createInstance(appid, ctxContext);
                        } else {
                            mTencent = Tencent.createInstance(AppConstants.APP_ID, ctxContext);
                        }
                        mHandler = new Handler();
                        mProgressDialog = new ProgressDialog(
                                MainActivity.this);
                        initViews();
                    }
                }).show();
	}

	/**
	 * 初始化界面
	 */
	private void initViews() {
		mLoginButton = (ImageView) findViewById(R.id.login_btn);
		mBaseMessageText = (TextView) findViewById(R.id.base_message_tv);
        mMessageText = (TextView) findViewById(R.id.message_tv);		
		updateLoginButton();
		mLoginButton.setOnClickListener(this) ;
	}
    /**
     * 更新登入状态按钮
     */
	private void updateLoginButton() {
       mLoginButton.setImageResource(mTencent.isSessionValid()?R.drawable.com_tencent_open_logout
               : R.drawable.com_tencent_open_login) ;
      
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		  Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
	        switch (v.getId()) {
	            case R.id.login_btn:
	                onClickLogin();
	                v.startAnimation(shake);
	                break;
	            default :
	            	break ;
	        }
	}
	private void onClickLogin() {
    	if (mTencent.isSessionValid()) {
            mTencent.logout(this);
            updateLoginButton();
    	} else {
	    	IUiListener listener = new BaseUiListener() {
	    		@Override
	    		protected void doComplete(Object values) {
	    		    updateLoginButton();
	    		}
	    	};
	    	mTencent.login(this, "all", listener);//跳转至sdk登入界面
    	}
    }
}

     跳转至登入界面

 登入成功后返回的信息

 

  • 大小: 4.5 KB
  • 大小: 87.9 KB
  • 大小: 67.1 KB
2
2
分享到:
评论

相关推荐

    Python库 | tencentcloud-sdk-python-solar-3.0.347.tar.gz

    5. **参数验证**:自动校验API调用的输入参数,防止因参数错误导致的问题。 三、使用步骤 1. **安装**:首先,你需要通过pip安装这个库,命令为:`pip install tencentcloud-sdk-python-solar-3.0.347.tar.gz`。 ...

    com.tencent.tts.sougou.res.front1.zip

    标题“com.tencent.tts.sougou.res.front1.zip”表明这是一个腾讯公司(Tencent)旗下的文本转语音(TTS,Text-to-Speech)资源包,主要用于与搜狗(Sogou)相关的应用或服务。TTS技术是人工智能领域的一个重要组成...

    QQ的HTTP接口探究[参考].pdf

    QQ的HTTP接口探究主要涉及到的是腾讯QQ早期的一种基于HTTP协议的API,允许开发者通过特定的命令与QQ服务器进行交互,实现一系列基本的QQ功能。这个接口位于`tqq.tencent.com:8000`,并且使用POST方法进行数据传输。...

    腾讯云通信

    【腾讯云通信】是腾讯公司推出的一款专业级的通信服务,它基于腾讯即时通讯技术(Tencent Instant Messaging,简称TIM)3.x版本构建,旨在为开发者提供高效、稳定、安全的通信解决方案。这款服务适用于各种应用场景...

    高效的 RapidJSON 解析/生成器支持库,提供 SAX 及 DOM 操作

    高效的 C++ JSON 解析/生成器,提供 SAX 及 DOM 风格 API 简介 RapidJSON 是一个 C++ 的 JSON 解析器及生成器。它的灵感来自 RapidXml。 RapidJSON 小而全。它同时支持 SAX 和 DOM 风格的 API。SAX 解析器只有约 ...

    腾讯云对象存储上传下载模块源码

    在IT行业中,云存储服务已经成为数据管理和备份的重要方式,腾讯云对象存储(Tencent Cloud Object Storage,简称COS)就是腾讯云提供的一种高效、安全、低成本的存储解决方案。本资源聚焦于腾讯云COS的上传下载模块...

    #RAPIDJSON_LIB1.1#20200314版(rapidjson.fne)-易语言

    高效的 C++ JSON 解析/生成器,提供 SAX 及 DOM 风格 API 简介 RapidJSON 是一个 C++ 的 JSON 解析器及生成器。它的灵感来自RapidXml 。 RapidJSON 小而全。它同时支持 SAX 和 DOM 风格的 API。SAX 解析器只有约 ...

    基于云开发的微信答题小程序,软件架构是微信原生小程序+云开发

    在当前的数字化时代,微信小程序已经成为了移动应用领域的一个重要组成部分,尤其对于轻量级、快速触达用户的应用场景,其优势明显。本项目“基于云开发的微信答题小程序”结合了微信原生小程序和云开发的技术,构建...

    vue结合el-upload实现腾讯云视频上传功能

    6. **验证视频格式和大小**:在上传之前,通过JavaScript代码校验上传的视频文件类型是否为指定的视频格式(如MP4或MOV),同时校验视频文件大小是否不超过700MB。 7. **进度条展示**:使用Element UI的el-progress...

    TDSQL在微众银行核心交易系统中的实践

    TDSQL(Tencent Distributed SQL)是一种分布式数据库解决方案,它是腾讯公司在MySQL基础上开发的,旨在解决传统MySQL在分布式环境下的不足,尤其适用于金融等需要高一致性、高可用性的场景。 #### 微众银行核心...

    【最新版】wechat_devtools_1.02.2004020.dmg【亲测可用】最好的微信开发者工具

    A 新增 支持模拟 API 的返回内容 详情 A 新增 支持同时重命名多个同名的文件 A 新增 真机调试出现异常时,可手动操作重试 A 新增 增加工具加载 loading 展示 A 新增 模拟器支持终止 A 新增 支持小游戏代码补全 ...

Global site tag (gtag.js) - Google Analytics