zoukankan      html  css  js  c++  java
  • Java基础知识强化之网络编程笔记20:Android网络通信之 Android常用OAuth登录和分享

    1.  申请百度开发者账号及百度OAuth简介。

    (1)申请开发者账号:

    http://developer.baidu.com/

    (2)创建项目:

    http://developer.baidu.com/console#app/project

    (3)介绍OAuth:

      OAuth2.0(开放授权)是一个开放标准,用户授权后,第三方应用无需获取用户的用户名和密码就可以访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表)。

    Access Token:用户身份验证和授权的凭证。第三方应用在调用百度开放API之前,首先需要获取Access Token。

    • 典型案例:如果一个用户拥有两项服务:一项服务是图片在线存储服务A,另一个是图片在线打印服务B。 

        由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,假设这两个用户名各不相同,密码也各不相同。当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?

      法一:用户可能先将待打印的图片从服务A上下载下来并上传到服务B上打印,这种方式安全但处理比较繁琐,效率低下

      法二:用户将在服务A上注册的用户名与密码提供给服务B,服务B使用用户的帐号再去服务A处下载待打印的图片,这种方式效率是提高了,但是安全性大大降低了,服务B可以使用用户的用户名与密码去服务A上查看甚至篡改用户的资源

      很多公司和个人都尝试解决这类问题,包括Google、Yahoo、Microsoft,这也促使OAUTH项目组的产生。OAuth是由Blaine Cook、Chris Messina、Larry Halff 及David Recordon共同发起的,目的在于为API访问授权提供一个开放的标准。OAuth规范的1.0版于2007年12月4日发布。
     
    OAuth 特点:
    (1)简单:不管是OAUTH服务提供者还是应用开发者,都很易于理解与使用;
    (2)安全:没有涉及到用户密钥等信息,更安全更灵活;
    (3)开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH;
     
     
     
    2. Authorization Code授权
    (1)基本流程:
     
     
    (2)Web应用的验证授权(Authorization Code)

       •用户登录

       登录流程开始于重定向用户浏览器(如果需要的话,可以弹出窗口或打开新页面)到CSDN oauth 2.0的Authorize Endpoint,并传递三个必须参数

    • client_id:在开发者中心注册应用时获得的API Key。
    • redirect_uri:登录成功后浏览器回跳的URL。
    • response_type:服务端流程,此值固定为“code”。
    1 http://api.csdn.net/oauth2/authorize? client_id=YOUR_API_KEY&redirect_uri=YOUR_CALLBACK_URL&response_type=code

      •获取Access Token

    当用户成功登录后,就可以使用服务返回的Authorization Code来获取Access Token。

    • client_id:在开发者中心注册应用时获得的API Key。
    • client_secret:在开发者中心注册应用时获得的API Secret。
    • grant_type:此值为“authorization_code”。
    • redirect_uri:流程结束后要跳转回得URL。
    • code:用户登录成功后获得的 Authorization Code。
    1 http://api.csdn.net/oauth2/access_token? client_id=YOUR_API_KEY&client_secret=YOUR_API_SECRET&grant_type=authorization_code &redirect_uri=YOUR_CALLBACK_URL&code=THE_CODE_FROM_ABOVE

    服务返回结果如下:

    {
        "access_token": "0dd49b2a5afa45bba6765ba4fdd1b3c9",
        "expires_in": 86400,
        "username": "zhuyi"
    }

     (3)客户端的验证授权(Resource Owner Password Credentials)

       •获取Access Token

    直接传输用户名、密码来获取Access Token。

    • client_id:在开发者中心注册应用时获得的API Key。
    • client_secret:在开发者中心注册应用时获得的API Secret。
    • grant_type:此值为“password”。
    • username:授权用户的用户名。
    • password:授权用户的密码。
     
    http://api.csdn.net/oauth2/access_token? client_id=YOUR_API_KEY&client_secret=YOUR_API_SECRET&grant_type=password &username=USER_NAME&password=PASSWORD


    服务返回结果如下:

     
    {
        "access_token": "0dd49b2a5afa45bba6765ba4fdd1b3c9",
        "expires_in": 86400,
        "username": "zhuyi"
    }
  • 相关阅读:
    js关闭当前页面(窗口)的几种方式总结
    Servlet 文件上传
    Servlet Cookie 处理
    Servlet Session 跟踪
    Servlet 异常处理
    Servlet 编写过滤器
    Servlet HTTP 状态码
    Servlet 服务器 HTTP 响应
    Servlet 客户端 HTTP 请求
    Servlet 表单数据
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4890143.html
Copyright © 2011-2022 走看看