• 【React Native 实战】微信登录


    1.前言
      在今天无论是游戏开发还是app开发,微信作为第三方登录必不可少,今天我们就用react-native-wechat实现微信登录,分享和支付同样的道理就不过多的介绍了。

    2.属性

    1)registerApp(appid):

      appid:String类型,从微信开放平台后台获取。

    2)registerAppWithDescription(appid, appdesc):

      此方法只支持iOS; appid: String类型,从微信后台获取;  appdesc:String类型,描述信息。

    3)openWXApp():

      打开微信app。

    4)sendAuthRequest([scope[, state]]):

      微信登录请求,获取微信返回的token;  scope:应用授权作用域,如获取用户个人信息则填写snsapi_userinfo。

    5) shareToTimeline(data):

      分享到朋友圈:

      {Object} data contain the message to send
      {String} thumbImage Thumb image of the message, which can be a uri or a resource id.
      
      {String} type Type of this message. Can be {news|text|imageUrl|imageFile|imageResource|video|audio|file}
     
      {String} webpageUrl Required if type equals news. The webpage link to share.
      
      {String} imageUrl Provide a remote image if type equals image.
      
      {String} videoUrl Provide a remote video if type equals video.
      
      {String} musicUrl Provide a remote music if type equals audio.
      
      {String} filePath Provide a local file if type equals file.
      
      {String} fileExtension Provide the file type if type equals file.

    6) shareToSession(data)

      分享到好友或群,数据结构跟分享到朋友圈类似。

    3.使用实例

    1)安装react-native-wechat:

      npm install react-native-wechat --save

    2) 自动关联:

      rnpm link react-native-wechat

      非到万不得已的时候,最好不要手动关联

    3)在MainApplication中加入如下代码

    import com.theweflex.react.WeChatPackage;       // Add this line before public class MainActivity
    ...
    
    /**
     * A list of packages used by the app. If the app uses additional views
     * or modules besides the default ones, add more packages here.
     */
    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
        new MainReactPackage(), 
        new WeChatPackage()        // Add this line
      );
    }

    4)创建Package

      名称为你应用的包名+ wxapi,在新建的包中创建一个名字为WXEntryActivity的类。如包名为com.platformproject,目录结构和代码如下

    5)在AndroidManifest.xml中加入微信Activity,如下

    6)在componentDidMount中调用registerApp

    componentDidMount() {
        try {
          WeChat.registerApp('xxxx');//从微信开放平台申请
        } catch (e) {
          console.error(e);
        }
        console.log(WeChat);
      }

    7)调用微信登录认证

    import * as WeChat from 'react-native-wechat';//首先导入react-native-wechat
    WeChat.sendAuthRequest("snsapi_userinfo");//在需要触发登录的时候调用

      如果成功此时会弹出微信登录的认证界面,认证完就可以获取到token了。拿到token之后可以通过一下url进一步取到昵称,性别,头像等信息。

    https://api.weixin.qq.com/sns/oauth2/access_token?appid="+Config.wechat_Appid+"&secret="+Config.wechat_AppSecret+"&code="+token+"&grant_type=authorization_code

      如果弹出Scope参数错误或没有Scope权限,则需要从微信开放平台,认证开发者,申请开通登录等权限。

    8)注意

      微信开放平台,后台需要填写应用包名和应用签名,应用签名是使用微信开放平台提供的Android小工具生成的,手机安装小工具之后,输入应用的包名,即可生成对应的应用签名。

    4.效果

      暂无,如果有任何问题,可留言讨论交流。

  • 相关阅读:
    51Nod 1119 机器人走方格 V2 组合数学 费马小定理
    Codeforces Round #439 div2 869A The Artful Expedient +869B The Eternal Immortality
    51Nod 1050 循环数组最大子段和 dp
    51Nod 1009 数字1的数量 数位dp
    51Nod 1082 与7无关的数 暴力打表(埃氏筛的感觉)
    POJ 2001 Shortest Prefixes
    字典树模板
    HDU 1251 统计难题
    kmp算法模板
    HDU 2087 剪花布条
  • 原文地址:https://www.cnblogs.com/zhangdw/p/6194345.html
Copyright © 2020-2023  润新知