liyayan 941ba1abd4 4A登陆联调,token添加模拟,优化代码结构 5 年 前
..
src 941ba1abd4 4A登陆联调,token添加模拟,优化代码结构 5 年 前
Readme.md 941ba1abd4 4A登陆联调,token添加模拟,优化代码结构 5 年 前
package.json 941ba1abd4 4A登陆联调,token添加模拟,优化代码结构 5 年 前
plugin.xml 941ba1abd4 4A登陆联调,token添加模拟,优化代码结构 5 年 前

Readme.md

移动应用平台单点登录SSO插件

支持平台:iOS 9 ~ 12; Android:4.4 ~ 8 功能:启动传参(请注意额外配置)

ionic APP集成步骤

  1. 项目根目录下package.json 文件中 dependencies 添加插件依赖,插件的网络地址或本地地址,如以下两种方式均可以 "cordova-plugin-dingxin-sso": "http://test:123456@120.78.83.172/mobility/cordova-plugin/yi-dong-ying-yong.git" "cordova-plugin-dingxin-sso": "file:./myplugins/yi-dong-ying-yong-copy"

  2. Mac为terminal/Win为DOS窗口中,执行以下命令 yarn install ,不要使用npm install

  3. 项目根目录下config.xml文件中 如果没有则添加

    **<variable name="URL_SCHEME" value="本应用的url scheme值,请手动更改" />**  设置规则请参考iOS额外配置
    

    如果url scheme修改失败,则主动修改插件yi-dong-ying-yong-copy下的plugin.xml文件,然后再次执行 yarn install <preference name="URL_SCHEME" default="本应用的url scheme值,请手动更改"/>

  4. 在登录component.ts 添加以下sample代码:

    cordova.dingxin.sso.login(
        (ssoRes) => {
            // dingxin.sso 登录回调
            alert(ssoRes);
            let data  = JSON.parse(ssoRes);
            // TODO ...
        }, () => {
            // dingxin.sso 登录失败回调
            alert("4A 登录失败");
            // TODO ...
        }, "2", "com.csg.mobileark"); // 2: 使用移动平台V2 版本; "com.csg.mobileark": 安卓为移动应用平台app的 package id, iOS则要修改为本应用的urlScheme。
    

    iOS 格外配置

    移动应用平台是通过URL Scheme唤醒APP的时候把登录信息传递到目标APP,所以需要格外配置

    1. AppDelegate.m文件 ``` #import "SSOLoginPlugin.h"
    2. (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary *)options{ // 发送应用被打开的通知给Cordova [[NSNotificationCenter defaultCenter] postNotificationName:CDVPluginHandleOpenURLNotification object:url];

      [SSOLoginPlugin handleOpenUrl:url commandDelegate:self.viewController.commandDelegate]; return NO; } 也可以使用打包脚本把已经写好的AppDelegate.m在cordova 生产iOS Platform的时候覆盖生产的AppDelegate.m cp $BASEDIR/AppDelegate.m $BASEDIR/../platforms/ios/角色1/Classes```

    3. URL Scheme的设置 规则:bundle id + md5加密,如培平/乐学南网cn.csg.9558bfc348,招聘cn.cst.c66105c6ab等 如项目根目录下config.xml中添加:

      <plugin name="cordova-plugin-dingxin-sso" spec="./myplugins/yi-dong-ying-yong">
      <variable name="URL_SCHEME" value="加密后的字符串" />
      </plugin>
      

      注意如果使用了cordova-plugin-inappbroswerwithheader 插件,需要将value保持一致

    4. iOS接收数据 分为 应用主动调起平台2.0进行登录(App主动获取)平台2.0在工作台点击图标唤醒应用(App被动登录) 两种情况 ``` // App主动获取(调试模式,仅iOS下有效) function gettesttoken() { alert(12345); cordova.dingxin.sso.loginDebugiOS((success) => { let data = JSON.parse(success); }, (error) => {

    5. }, '2', '本应用的url scheme', 'true(iOS有效)'); };

      // App被动登录( 该代码仅应用被平台2.0在工作台点击图标打开时才会有作用,目前仅iOS有效 解决需要手动点击登录,仅iOS有效,Android解决思路:在H5页面启动时主动调用cordova.dingxin.sso.login方法 function handleOpenUrl(params) {

      alert("被动获取" + params);
      // Android被动获取方法为入口处 主动调用 App主动获取 的方法
      

      };

      
      ## Android格外配置
          
      在对应Module下的build.gradle目录中增加如下代码:
      
      

      apply plugin: 'com.android.application'

      // 增加这一行 repositories { flatDir { dirs 'libs' } }

      android {

      // ...
      

      }

      
      最后在dependencies中进行引用,即完成SDK的导入。代码如下所示:
      
      

      android {

      // ...
      

      }

      dependencies {

      // 增加这一行,xxx为版本号
      implementation(name: 'appstore_sso-xxx', ext: 'aar')
      

      }

      
      注意:1)`implementation`为`com.android.tools.build:gradle` 3.0及以上版本出现的闭包。
      
      
      因为Android可以隐藏APP桌面图标,建议通过打包脚本添加以下
      

      cp $BASEDIR/MainActivity.java $BASEDIR/../platforms/android/src/cn/csg/zhangshangnanwang/MainActivity.java cp ./Base64Utils.java ./platforms/android/src/cn/csg/lexuenanwangs/Base64Utils.java sed -i -e 's// /' ./platforms/android/AndroidManifest.xml ```