npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gh-qqnews-user

v1.0.1

Published

获取用户的头像昵称和登录类型

Downloads

8

Readme

腾讯新闻增长技术团队的用户信息

背景介绍(Background)

version size

当前 npm 包集合了获取用户信息、登录、切换登录态、退出登录等功能。可以在新闻客户端、微信、QQ、浏览器等环境中使用。

请注意,当前组件只在*.qq.com中使用。

  • getUserInfo:获取用户信息;
  • login:登录,在手 Q 中自动获取登录态,无需登录;
  • changeLogin:切换登录,只在新闻客户端中使用;
  • logout:退出登录,只在新闻客户端中使用;

安装(Install)

使用 npm:

$ npm install gh-qqnews-user

使用 bower:

$ bower install gh-qqnews-user

使用 yarn:

$ yarn add gh-qqnews-user

使用 jsDelivr 的 CDN 地址:

<script src="https://cdn.jsdelivr.net/npm/gh-qqnews-user"></script>

使用 unpkg 的 CDN 地址:

<script src="https://unpkg.com/gh-qqnews-user"></script>

使用方式(Usage)

这里要提供先直接用一个简单的例子,介绍如何使用。

import { getUserInfo, login, changeLogin, logout } from "gh-qqnews-user";

// 获取用户信息
// 支持回调函数
// 该方法返回的字段,可以继续下拉,有介绍
getUserInfo((userinfo) => {
    console(userinfo);
});
// 支持Promise
getUserInfo().then((userinfo) => {
    console.log(userinfo);
});

// 登录
login("qqorweixin", (islogined) => {
    console.log("login", islogined);
});
login("qqorweixin").then((islogined) => {
    console.log("login", islogined);
};
login().then((islogined) => {
    console.log("login", islogined);
};

// 切换登录方式
changeLogin("qqorweixin").then((islogined) => {
    console.log("login", islogined);
};

// 退出登录
logout();

各方法的说明

getUserInfo

返回的字段

获取用户的信息,包含了用户的登录方式、昵称、头像和 openid:

未登录时:

{
  "logintype": "" // 为空时表示未登录
}

已登录:

{
  "logintype": "qq", // 已登录,qq:qq或qq互联登录,weixin:微信登录
  "openid": "123456",
  "nickname": "帅小丘",
  "avatar": "http://thirdqq.qlogo.cn/g?b=oidb&k=I5M9qhYB4s0sZsicicCPouibw&s=100&t=1483288257"
}

传入的参数

同时,该方法还可以传入参数,若第 1 个参数是newsapp或者liteapp,则直接从接口获取用户的信息。

这里有多种的调用方式:

// declare function getUserInfo(): Promise<UserInfoResult>;
// declare function getUserInfo(callback: (userInfo: UserInfoResult) => void): Promise<UserInfoResult>;
// declare function getUserInfo(app: "newsapp" | "liteapp"): Promise<UserInfoResult>;
// declare function getUserInfo(app: "newsapp" | "liteapp", callback: (userInfo: UserInfoResult) => void): Promise<UserInfoResult>;

// 回调函数
getUserInfo((userinfo) => {
  console(userinfo);
});

// Promise
getUserInfo().then((userinfo) => {
  console.log(userinfo);
});

// 所在的APP和回调函数
getUserInfo('newsapp', (userinfo) => {
  console(userinfo);
});

// 所在的APP和Promise
getUserInfo('newsapp').then((userinfo) => {
  console.log(userinfo);
});

login

登录。可以在微信、新闻客户端中拉起登录。

传入的参数只在客户端中生效,在微信中默认会使用微信公众号授权登录,QQ 中无需登录,需要选择登录方式:

  • 空: 则默认为 qqorweixin 的方式;
  • qq: QQ 登录;
  • weixin: 微信登录;
  • qqorweixin: QQ 或微信登录,用户可以任意选择,只在新闻客户端中生效;

回调方式支持回调函数和 Promise;

login((islogined) => {
  console.log(islogined);
});

login().then((islogined) => {
  console.log(islogined);
});

// 新闻客户端中,拉起双登录
login('qqorweixin', (islogined) => {
  console.log(islogined);
});

login('qqorweixin').then((islogined) => {
  console.log(islogined);
});

// 新闻客户端中,只拉起QQ登录
login('qq').then((islogined) => {
  console.log(islogined);
});

// 新闻客户端中,只拉起微信登录
login('weixin').then((islogined) => {
  console.log(islogined);
});

注意:

在 iOS 的新闻客户端中,不论用户是否已经登录,都可以使用login再次呼起登录;在 Android 的新闻客户端中,若呼起的登录方式与当前的登录态相同,则直接回调为 false,不会弹出登录窗口,比如当前为 QQ 登录,那么再次使用qq或者qqorweixin呼起登录时,都会直接回调为 false。

同时,在这两个系统的新闻客户端内,若再次呼起登录的方式,与当前的登录状态不一样,则后登录的账户会作为副账户存在,不会顶掉当前主账户的信息。

changeLogin

切换主登录方式。

在上面我们已经说过login会存在两个问题:

  • Android 下若呼起的登录方式与当前的登录态相同,则无法重新登录;
  • iOS 和 Android 下,若呼起的登录方式与当前的登录态不同是,则后登录的账号作为副账户存在

为了解决这两个问题,客户端还提供了切换账号的功能,其实就是: 退出当前账号(logout)+重新登录(login)。若我们使用上面两个方式的组合来让用户重新登录,iOS 下没问题,但在 Android 下,退出账号时会首先弹窗确认,而这个弹窗确认是不会阻止后面的 login 进程的,login 就会进入到自己的判断流程,导致 login 失败。

这里我们使用changeLogin(string logintype, function callback)来切换账号。使用方式与 login 一样:

第 1 个参数登录的方式有:

  • qq :只有 QQ 登录按钮 ;
  • weixin : 只有微信登录按钮;
  • qqorweixin; QQ 和微信按钮都有,用户可以任意选择

第 2 个参数是登录后的回调, true表示登录成功; false表示登录失败,比如中断登录等。

changeLogin('qq', (result) => {
  if (result) {
    alert('切换账号成功');
  } else {
    console.log('中断切换');
  }
});

loginForce

强制登录。无论本地是否已登录,均重新拉起登录方式。若本地已经登录,则需先退出当前登录态。

只在新闻客户端中使用

logout

退出登录。没有参数。

logout();

ChangeLog

ChangeLog