oauth2.0 学习案例demo_从0入门产品经理,如何设计一款APP产品demo(上篇)

在发布了两篇关于小白校招求职产品经理的文章之后,我在评论和私信里收到了很多这样的问题:

“您好,我是大三/研二学生,秋招准备投产品,但是缺少这方面的实习。想问一下,你说自己做一个产品demo,具体包括哪些内容?如何做出这个产品demo呢?”

不少同学刚接触到产品经理这一工作,比较感兴趣,但对pm的认识仅限于网上看到的一些零散的文章,或者身边人的大致介绍,缺乏系统的学习,也没有项目经验。想自己动手设计一款产品的时候也不知道如何下手,需要自己搜索大量资料并进行筛选,往往找到有用有料的干货是比较低效的。本文就如何自己设计一款APP产品demo为例,带你学习系统的产品工作流程和方法。

夏树君:无产品实习,我如何拿到字节跳动、快手产品offer(面经长文)​zhuanlan.zhihu.com
夏树君:想找产品经理的工作,你可能想知道这些​zhuanlan.zhihu.com

适合阅读本文的人群:

  • 想从事产品,但不知道从何学起
  • 学了一些产品知识,不知道如何做一个产品项目

本系列文章分为上、中、下两篇,内容包括需求分析、竞品分析和数据分析、功能设计、流程设计、原型设计及PRD撰写,中间既有理论知识,也有具体案例,和实操训练。文章内许多知识点参考了网易云课堂的网易产品经理微专业。希望看完这一系列文章后,你可以独立产出一份最小可执行产品的PRD。

一、需求挖掘与分析

1.产品定位

我们在做需求分析之前,首先得选择一个具体的赛道方向,确定产品定义。产品定义关乎到一个产品的方向,清晰的产品定义能使整个项目的工作目标明确。产品定义一般涉及使用人群、主要功能以及产品特色三个方面,如果摸清楚了这三个维度的问题,基本上解决了产品定义的问题。比如我们选择拍摄美化这一方向,一款专为摄影初学者使用的简单易用的修图软件。这里使用人群是“摄影初学者”,主要功能是“修图”,产品特色是“简单易用”。

2.用户需求挖掘

在进行了产品定位后,我们就可以进行用户需求分析了。分析用户需求要考虑到目标用户、使用场景和解决方案,一句话概括就是“目标用户”在“合理场景”下的最优“解决方案”。也就是说,我们的产品要解决谁在什么环境下遇到什么问题,以及怎么解决。比如我们发现,用户(谁)无意中听到一首好听的歌,但是不知道什么名字(这个场景下用户很强烈地想知道这个歌名),就可以设计听歌识曲这一功能去解决。

那么怎么发现用户需求呢?需求主要来源一是自己发现,我们可以通过日常观察身边看到的人和事,不断的追问用户在某一场景下现有的需求解决方式是否合理,从而发现尚未解决的痛点。对于身边接触不到的用户类型,我们就需要组织专门的用户调研了。用户研究有多种多样的方法去挖掘、分析用户需求,比如定性方法有访谈法、可用性测试、日志法、观察法等等,定量方法有问卷法、舆情分析、内容分析等等。从产品的角度出发,我们不需要掌握那么多专业的方法,但是要知道调研的目的是什么,要提出什么问题,如何发现并记录下来,如何整理分析调研材料,最终找到问题的解答。最后一种来源是老板和同事,老板处于战略目的会提出一些想法,由产品去落地;而运营、商业化等业务同事也会提一些他们业务需求所需要的产品实现,比如运营资源位、商业化产品功能。

延伸阅读: Kelly:如何选择用户体验研究方法?

需要强调的是,在用户调研的工作中,我们需要提炼出的内容要点一定要有用户画像、使用场景、重点用户需求、用户需求背后的动机目的。用户画像的划分维度一般有性别、年龄等人口学因素,收入、教育、城市等经济文化因素,此外还有音乐、教育、视频等垂直领域因素和心理行为因素。找到目标用户的特有属性来建立用户模型,一般属性因子的数量2-4个最佳,不宜过多,否则模型会非常复杂。比如网易云音乐在项目立项时期,为了弄清楚移动音乐产品市场还有什么突破点可以做,就去大量调研用户,发现年龄是和音乐喜好有着很大关联的一个因素,可以从年龄、音乐喜好程度这2个因素下手,将目标用户划分到4个象限上,分别是年轻音乐偏好低、年长音乐偏好低、年轻音乐偏好高、年长音乐偏好高这4类用户,其中音乐偏好低的2类用户就被排除掉,年长的人音乐品味比较稳定,一般听固定的歌曲曲库,只有年轻且音乐偏好高的人有着大量听歌的诉求,会主动找歌听或者被动听歌。这样产品目标用户的用户画像就确定下来了。

3.需求分析

在完成需求挖掘后,我们需要将得到的用户需求转化为产品需求,最经典的方法论是“角色-场景-路径”:

  • 角色,是指有着相同特征的一类人群,我们要知道他的需求出现的动机,搞清楚他是谁?
  • 场景,这个角色实现需求的场景,弄明白他在哪里?
  • 路径,用户实现需求的行为过程,思考他怎么做?

比如上面说到的爱听音乐的年轻人(角色),这类用户他们在运动的时候(场景),想听一些适合节奏明快并且符合自己喜好的音乐,希望不用太多选择就可以一直听得到(用户需求),那他们的行为路径是打开app-选运动场景-自动播放,或者选择某一适合运动时听的歌单-随机播放(路径)。

4.需求筛选和决策

面对成千上万的需求,我们不可能一次性全都实现,既需要判断是否伪需求、是否有必要做,还需要划分优先级以进行开发排期。因此,筛选决策是一个非常重要环节,反映pm的能力。一般从四个维度筛选平衡需求:

  • 商业价值:满足这个需求,是否有跟高的商业价值
  • 用户价值:满足这个需求,是不是解决用户的核心痛点
  • 技术水平:满足这个需求,当前的技术是否能够实现
  • 竞争对手:竞争对手所实现的功能,没有完全满足用户需求

其中,如何判断需求是不是解决用户的核心痛点,我们可以借助KANO模型,根据需求对用户的影响程度来对需求进行排序和筛选,还是以网易云音乐为例:

  • 基本型需求:没有的话不高兴,有的话无反应 → 搜索功能
  • 期望型需求:没有的话不高兴,有的话高兴 → 个性化推荐
  • 惊喜型需求:没有的话无反应,有的话高兴 → 歌单

基本型需求和期望型需求在很多竞品内都有,我们也需要做,但是惊喜型需求是我们产品区别于其他产品的核心竞争力,所以也排高优先级。筛选出优先级高的需求,放到第一期做,这样一个最小可执行产品的主要产品需求就确定下来了。

以上就是需求挖掘和分析部分,后续再讲讲剩下的竞品分析和数据分析、功能设计、流程设计、原型设计及PRD撰写。我在评论里附上一些PRD的模板和案例,大家自取。

参考资料:

网易云课堂的网易产品经理微专业 https://study.163.com/topics/PMnetease/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
OAuth2.0 单点登录是一个相对复杂的实现,需要多个步骤和不同的组件。以下是一个简单的 Demo,演示了如何使用 OAuth2.0 实现单点登录。 **步骤1:注册 OAuth2.0 应用程序** 首先,您需要注册一个 OAuth2.0 应用程序,以便其他应用程序可以使用它来进行单点登录。注册过程将根据您使用的身份验证提供程序而有所不同,但一般来说,您需要提供以下信息: - 应用程序名称 - 应用程序描述 - 回调 URL - OAuth2.0 提供程序的客户端 ID 和密钥 **步骤2:设置回调 URL** 回调 URL 是 OAuth2.0 提供程序将授权码发送回您的应用程序的 URL。您需要在您的应用程序中设置回调 URL,以便 OAuth2.0 提供程序可以将授权码发送回您的应用程序。 **步骤3:获取授权码** 在单点登录过程中,用户需要授权您的应用程序访问其信息。为了获取授权,您需要将用户重定向到 OAuth2.0 提供程序的授权 URL。用户将在此页面上输入其凭据,然后选择是否授权您的应用程序访问其信息。 当用户授权您的应用程序时,OAuth2.0 提供程序将重定向用户到您的应用程序的回调 URL,并为您的应用程序提供一个授权码。 以下是获取授权码的示例代码: ```python import requests client_id = 'your_client_id' client_secret = 'your_client_secret' authorization_base_url = 'https://example.com/oauth2/authorize' redirect_uri = 'https://localhost:8000/callback' token_url = 'https://example.com/oauth2/token' session = requests.Session() session.verify = False authorization_url, state = session.authorization_url( authorization_base_url, redirect_uri=redirect_uri) print('Please go here and authorize,', authorization_url) redirect_response = input('Paste the full redirect URL here:') session.fetch_token( token_url, authorization_response=redirect_response, client_secret=client_secret) ``` **步骤4:获取访问令牌** 一旦您有了授权码,就可以通过将其与您的 OAuth2.0 提供程序的客户端 ID 和密钥一起传递来获取访问令牌。访问令牌是一个长期有效的令牌,您可以在以后的所有请求中使用它来访问用户信息。 以下是获取访问令牌的示例代码: ```python import requests client_id = 'your_client_id' client_secret = 'your_client_secret' authorization_base_url = 'https://example.com/oauth2/authorize' redirect_uri = 'https://localhost:8000/callback' token_url = 'https://example.com/oauth2/token' session = requests.Session() session.verify = False authorization_url, state = session.authorization_url( authorization_base_url, redirect_uri=redirect_uri) print('Please go here and authorize,', authorization_url) redirect_response = input('Paste the full redirect URL here:') session.fetch_token( token_url, authorization_response=redirect_response, client_secret=client_secret) print(session.token) ``` **步骤5:使用访问令牌访问资源** 现在您已经有了访问令牌,您可以使用它来访问您的 OAuth2.0 提供程序的 API。在某些情况下,您可能需要向 API 提供其他信息,例如用户 ID 或其他参数。 以下是使用访问令牌访问资源的示例代码: ```python import requests access_token = 'your_access_token' api_endpoint = 'https://example.com/api/v1/user' response = requests.get(api_endpoint, headers={'Authorization': 'Bearer %s' % access_token}) print(response.json()) ``` 这是一个简单的 OAuth2.0 单点登录示例,演示了如何使用 OAuth2.0 实现单点登录。请注意,实际实现可能会更复杂,并涉及更多的步骤和安全性考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值