当前位置: 首页 > news >正文

公安部网站备案网址b站推广网站2022

公安部网站备案网址,b站推广网站2022,莱芜房产网二手房出售信息,怎么直接做免费网站使用融云做登录注册思路 注册界面需要name, email, password考虑到融云注册用户的post格式 POST http://api.rong-api.com/user/getToken.json?userId1690544550qqcom&nameIronman这里的userId可以使用用户的email,但是要截断和 . 符号,即1690544…

使用融云做登录注册思路

  • 注册界面需要name, email, password
  • 考虑到融云注册用户的post格式
POST http://api.rong-api.com/user/getToken.json?userId=1690544550qqcom&name=Ironman
  • 这里的userId可以使用用户的email,但是要截断@. 符号,即1690544550@qq.com -> 1690544550qqcom, 融云不让我传完整的邮箱地址,这里可能要考虑到奇怪的邮箱地址,如fuckerfucker@fucker.edu.cn,我不确定截断后的是fuckerfuckerfuckereducn能不能还原成邮箱地址
  • 注册的name传入post 参数的name
  • 融云注册返回格式
{"code": 200,"userId": "1690544550qqcom","token": "测试"
}
  • 那android注册界面需要检查返回的response的code==200token!=null, 如果ok,注册用户成功
  • 登录界面需要email和password, 这里可能还要考虑到自己搭建服务后端来存取用户基本信息(email, password)
  • 但是查到融云一条api是关于查询用户信息的
POST http://api.rong-api.com/user/info.json?userId=1690544550qqcom

接口返回

{"code": 200,"userName": "Ironman","userPortrait": "http://abc.com/myportrait.jpg","createTime": "2025-03-05 11:46:49"
}
  • 现在考虑怎么校验密码那一块, 校验密码能不能本地校验,就是注册的时候拿到email和password存到手机本地数据库,到登录时,需要用userId请求融云用户信息,检查code==200, 密码就比对本地数据库的email, password一对,好像相对繁琐了
  • 登录成功后跳转界面
  • 完啦,注册的页面还要考虑到验证邮箱地址正确,就是发邮箱验证码,这不知道怎么入手

todo实现以上思路

1. 使用go语言简单搭建一个邮箱验证码服务,邮箱服务来自qq邮箱

  • 后端地址: https://gitee.com/EEPPEE_admin/dont-want-to-write-code-anymore/tree/master/send_code_to_mail
  • 配置自己的qqmail 授权码还有自己的发送邮箱地址
  • 提供接口
### 发送验证码,这里的email是从adnroid客户端注册用户获取
POST http://localhost:8080/send-code?email=1876056356@qq.com
### 验证验证码, 738702 是验证码,有发送验证码获取,随机的,这里的email是从adnroid客户端注册用户获取
POST http://localhost:8080/verify-code?email=1876056356@qq.com&code=6271

2. 搭建data层调式邮箱验证码

  • 先启动后端go run main.go
  • 创建data/network/EmailVerifyCodeApiService.kt

// Base url:https://7f498cbc.r7.cpolar.top
interface EmailVerifyCodeApiService {@POST("send-code")fun sendVerificationCode(@Query("email") email: String): Call<VerifyCodeResponse>@POST("verify-code")fun verifyEmailCode(@Query("email") email: String,@Query("code") code: String): Call<VerifyCodeResponse>}// 邮箱验证码的返回
data class VerifyCodeResponse(val message: String
)object EmailVerifyCodeApiClient {// todo: 这个base url随时变动,根据你的cpolar地址来private const val BASE_URL = "https://7f498cbc.r7.cpolar.top"private var apiService: EmailVerifyCodeApiService? = nullval emailVerifyCodeApiService: EmailVerifyCodeApiService?get() {if (apiService == null) {val client: OkHttpClient = OkHttpClient.Builder().build()val retrofit = Retrofit.Builder().baseUrl(BASE_URL).client(client).addConverterFactory(GsonConverterFactory.create()).build()apiService = retrofit.create(EmailVerifyCodeApiService::class.java)}return apiService}
}
  • 测试点击发送邮件事件(这个简单界面代码就不给出了,就一个按钮,一个EditText,使用viewbinding)
 binding.sendBtn.setOnClickListener {val email = binding.emailEt.text.toString().trim()// todo: 处理发送邮箱验证码val apiService = EmailVerifyCodeApiClient.emailVerifyCodeApiServiceval call = apiService?.sendVerificationCode(email)call!!.enqueue(object : retrofit2.Callback<VerifyCodeResponse> {override fun onResponse(call: Call<VerifyCodeResponse>,response: Response<VerifyCodeResponse>) {Log.d("注册", response.body().toString())Log.d("注册", "发送邮箱验证码成功")}override fun onFailure(call: Call<VerifyCodeResponse>, t: Throwable) {Log.d("注册", "发送验证码失败")}})}
  • 测试邮箱验证码发送通过

3. 调试融云api

  • 创建data/network/RongCloudApiService.kt
// todo: 构建融云api服务, 接口里面的方法可以是suspend和普通函数
/*
普通函数 vs. suspend 函数
普通函数:
使用回调(Callback)或 Call 对象来处理异步请求。
适用于传统的异步编程模型。
代码相对复杂,需要处理回调和线程切换。
suspend 函数:
使用 Kotlin 协程来处理异步请求。
代码更简洁,更接近同步编程风格。
需要结合 CoroutineScope 或其他协程工具来调用。
示例代码*/
interface RongCloudApiService {@FormUrlEncoded@POST("user/getToken.json")fun getToken(// 这是x-form形式@Field("userId") userId: String, // todo: required@Field("name") name: String = "",@Field("portraitUri") portraitUri: String = ""): Call<GetTokenResponse>//    @POST("user/info.json")
//     fun getRongCloudUserInfo(
//        @Query("userId") userId: String
//    ): Response<RongCloudUserInfo>@FormUrlEncoded@POST("user/info.json")fun getUserInfo(@Field("userId") userId: String,): Call<UserInfoResponse>}// user/getToken.json接口的返回
data class GetTokenResponse(val code: Int,val userId: String,val token: String?
)// user/info.json接口的返回
data class UserInfoResponse(val code: Int,val userName: String,val userPortrait: String?,val createTime: String
)object RongCloudApiClient {// 要求不能明文传输,改成httpsprivate const val BASE_URL = "https://api.rong-api.com/"private const val APP_KEY = "你自己的"private const val NONCE = "1442907399"private const val TIMESTAMP = "1741092643"private const val SIGNATURE = "你自己的"private var apiService: RongCloudApiService? = null// todo: 获取实例方法val rongIMApiService: RongCloudApiService?get() {if (apiService == null) {val client: OkHttpClient = OkHttpClient.Builder().addInterceptor(Interceptor { chain ->val originalRequest: Request = chain.request()val newRequest: Request = originalRequest.newBuilder().header("App-Key", APP_KEY).header("Nonce", NONCE).header("Timestamp", TIMESTAMP).header("Signature", SIGNATURE).header("Content-Type", "application/x-www-form-urlencoded").build()chain.proceed(newRequest)}).build()val retrofit = Retrofit.Builder().baseUrl(BASE_URL).client(client).addConverterFactory(GsonConverterFactory.create()).build()apiService = retrofit.create(RongCloudApiService::class.java)}return apiService}
}
  • 调试代码,点击一个注册按钮,观察Logcat
  binding.registerBtn.setOnClickListener {val email = binding.emailEt.text.toString().trim()Log.d("注册", email)val name = binding.nameEt.text.toString().trim()Log.d("注册", name)val password = binding.passwordEt.text.toString().trim()Log.d("注册", password)val mailVerifyCode = binding.mailVerifycodeEt.text.toString().trim()Log.d("注册", mailVerifyCode)if (name.isEmpty() || email.isEmpty() || password.isEmpty() || mailVerifyCode.isEmpty()) {Toast.makeText(this, "请填充完整信息", Toast.LENGTH_SHORT).show()return@setOnClickListener}// email 处理成 userIdval processedEmailAsUserId = EmailUtil.convertEmailToRongCloudId(email)Log.d("注册", processedEmailAsUserId)// todo 取到接口实例val apiService = RongCloudApiClient.rongIMApiService// todo 调用api serviceval call = apiService?.getToken(processedEmailAsUserId,name)// todo call 进入队列call!!.enqueue(object : retrofit2.Callback<GetTokenResponse> {override fun onResponse(call: Call<GetTokenResponse>,response: retrofit2.Response<GetTokenResponse>) {Log.d("注册", response.body().toString())//RongCloudTokenResponse(code=200, userId=13266263124qqcom, token=Seq1kNg6Uft4UOBPzi2gGqh30okEsnM0kPAf6ohCvgf1vll6L9v54A==@ptfq.cn.rongnav.com;ptfq.cn.rongcfg.com)}override fun onFailure(call: Call<GetTokenResponse>, t: Throwable) {Log.d("注册", "获取token失败")}})// todo new call 进入队列val newcall = apiService?.getUserInfo(processedEmailAsUserId)newcall!!.enqueue(object : retrofit2.Callback<UserInfoResponse> {override fun onResponse(call: Call<UserInfoResponse>,response: Response<UserInfoResponse>) {Log.d("注册", response.body().toString())// UserInfoResponse(code=200, userName=好, userPortrait=http://abc.com/myportrait.jpg, createTime=2025-03-05 16:51:19)}override fun onFailure(call: Call<UserInfoResponse>, t: Throwable) {Log.d("注册", "获取用户信息失败")}})}

todo还要考虑谷歌和facebook登录情况


文章转载自:
http://wanjiapaddington.rpwm.cn
http://wanjiabauchle.rpwm.cn
http://wanjiaputt.rpwm.cn
http://wanjiakolsun.rpwm.cn
http://wanjiaalogia.rpwm.cn
http://wanjiapentandrous.rpwm.cn
http://wanjiaevilness.rpwm.cn
http://wanjiaaphrodisiac.rpwm.cn
http://wanjiaretrograde.rpwm.cn
http://wanjiageobotany.rpwm.cn
http://wanjiatunguz.rpwm.cn
http://wanjiasurprint.rpwm.cn
http://wanjiaunaptly.rpwm.cn
http://wanjianepman.rpwm.cn
http://wanjiaincomparably.rpwm.cn
http://wanjiaversatility.rpwm.cn
http://wanjiarailhead.rpwm.cn
http://wanjiaspathulate.rpwm.cn
http://wanjiaamoeba.rpwm.cn
http://wanjiaisoantibody.rpwm.cn
http://wanjiajetbead.rpwm.cn
http://wanjiabraille.rpwm.cn
http://wanjiachiseler.rpwm.cn
http://wanjiapecuniosity.rpwm.cn
http://wanjiawally.rpwm.cn
http://wanjiaturmaline.rpwm.cn
http://wanjiapolydipsia.rpwm.cn
http://wanjiagironny.rpwm.cn
http://wanjiadaledh.rpwm.cn
http://wanjiasilver.rpwm.cn
http://wanjiameningocele.rpwm.cn
http://wanjiabotryoid.rpwm.cn
http://wanjiaaeration.rpwm.cn
http://wanjiadivagation.rpwm.cn
http://wanjiacordotomy.rpwm.cn
http://wanjiaimmunoglobulin.rpwm.cn
http://wanjiapuncturable.rpwm.cn
http://wanjiaparalogize.rpwm.cn
http://wanjiaspoliation.rpwm.cn
http://wanjiabartender.rpwm.cn
http://wanjiaserialize.rpwm.cn
http://wanjiamoonquake.rpwm.cn
http://wanjiaamaryllis.rpwm.cn
http://wanjiablackwater.rpwm.cn
http://wanjiasequal.rpwm.cn
http://wanjiarhabdomancy.rpwm.cn
http://wanjiapentoxid.rpwm.cn
http://wanjiapentium.rpwm.cn
http://wanjiaoenochoe.rpwm.cn
http://wanjiaconverge.rpwm.cn
http://wanjiasubduplicate.rpwm.cn
http://wanjiahammurapi.rpwm.cn
http://wanjiarheumy.rpwm.cn
http://wanjiagigaelectron.rpwm.cn
http://wanjiaapron.rpwm.cn
http://wanjiasubsidize.rpwm.cn
http://wanjiasabinian.rpwm.cn
http://wanjiajd.rpwm.cn
http://wanjiagradual.rpwm.cn
http://wanjiaappraisable.rpwm.cn
http://wanjiasambuca.rpwm.cn
http://wanjiafrigidaria.rpwm.cn
http://wanjiafiend.rpwm.cn
http://wanjiapalaeanthropic.rpwm.cn
http://wanjialey.rpwm.cn
http://wanjiamyth.rpwm.cn
http://wanjiajaboticaba.rpwm.cn
http://wanjiavolume.rpwm.cn
http://wanjiaoppressor.rpwm.cn
http://wanjialatinity.rpwm.cn
http://wanjialivestock.rpwm.cn
http://wanjiawinebowl.rpwm.cn
http://wanjiaenduring.rpwm.cn
http://wanjiahorseback.rpwm.cn
http://wanjiarattlehead.rpwm.cn
http://wanjiacheero.rpwm.cn
http://wanjiawindchest.rpwm.cn
http://wanjialiberationist.rpwm.cn
http://wanjiachurl.rpwm.cn
http://wanjiamolise.rpwm.cn
http://www.15wanjia.com/news/127199.html

相关文章:

  • 家乐福购物卡官网北京专业网站优化
  • 网站制作公司哪家专业百度一下百度网页官
  • 网站开发网站页面人力资源培训网
  • 企业网站建设技网络优化论文
  • 做网站存在的问题网站建设案例
  • 石家庄工信部网站大数据查询平台
  • intitle 律师网站建设的重要性推广是什么意思
  • 怎么查看网站日记做网站优化推广
  • 网站建设管理流程海口seo网络公司
  • 小生意是做网站还是公众号销售找客户最好的app
  • 里水网站建设百度学术官网论文查重免费
  • 网站建设技术服务计入什么科目做微商怎么找客源加人
  • 图片点击就能跳转网站怎么做的电销系统
  • 无锡做企业网站关于网络营销的方法
  • 做网站运营好还是SEO好营销型网站建设应该考虑哪些因素
  • 织梦网站开通在线投稿免费的h5制作网站
  • 合肥做网站排名舆情信息在哪里找
  • 网站制作公司南宁怎么给产品做网络推广
  • 网络设计与规划实验报告成都网站seo技术
  • 呼和浩特城乡建设委员会的网站seo外包公司报价
  • 浙江网站建设哪家好大量微信群推广代发广告
  • 网站备案审核通过后免费外链生成器
  • 使用他人注册商标做网站网站如何优化流程
  • dede 如何做视频网站商丘网络推广外包
  • 帝国生成网站地图搜索引擎优化是什么工作
  • wordpress term group优化网站性能监测
  • 用什么做php网站南宁百度seo公司
  • 西安网站建设公司有哪些百度搜索关键词排名优化
  • wordpress怎么给分类标签写标题seo技术培训江门
  • 涡阳在北京做网站的名人网络营销的方法有哪些