Android 调用优酷SDK上传视频获取Token与code步骤

我们在做优酷上传视频的时候发现没有获取code与token这个过程,这可能会让些编程新手感到棘手,所以为了方便大家简单分享下我的思路:

程序实现前我们先要到优酷开放平台下载SDK(下载地址:http://open.youku.com/down),下载好后我们将压缩包解压,下面以Eclipse为开发工具进行讲解:
首先我们要获得优酷sdk的jar包,将解压好的YoukuUploadSDK-android工程导入到Eclipse中,展开该工程目录下的libs将里面的android-async-http-1.4.3.jar包复制到我们自己工程的libs目录下,然后将导入的优酷工程导出,选择Java下的JAR file 
-->展开工程将res文件和右侧窗口不需要的文件去掉并选择到处路径和文件名然后点finish,将获得的jar包拷贝到我们自己的工程libs目录下,一般程序会自动Baidu Path,若没有我们可以自己选择相应jar包右键-->Baidu Path-->add to Path,这样所需要的jar包准备完成!

根据优酷SDK的说明,上传过程主要分为以下7个步骤:

1. 新建android项目,引入YoukuUploadSDK-android jar包

2. 在MainActivity.java文件添加代码如sample.java所示,添加相关参数

3. 文件夹layout下activity_main.xml添加控件

4. 生成代码(xml文件代码)

5. 连接android手机运行android项目生成apk(切记开启开发者选项usb调试等)

6. 授权过程(获取access_token)

7. 点击upload上传


其中第一步我们前面已经说明了,第2-5及7个步骤只要按着它api文档中写的来做一般也不会有问题,这里重点说明下第六步的授权过程,本人也是在第六部上卡住通过不断阅读它提供的文档及互联网查找资料才最终解决,这里写下来方便以后回顾使用,同时也希望能帮助有需要的小伙伴们,废话不多说,下面先说说我的理解过程然后再附上我的实现过程供小伙伴们参考:


通过阅读优酷提供的关于授权机制这块的文档(http://open.youku.com/docs/OAuth2.html




从图中可以看出我们的项目在上传时需要首先跳转到授权页面来获取授权码,这里我使用一个WebView来显示授权页面,然后,我们可以通过使用授权码来交换令牌即所谓的access_token,最后通过access_token来获取上传的权限,这就是总体的思路,下面来分步详细说明:


参数:


client_id:string 必选参数 appkey

client_secret:string 必选参数 appsecret

grant_type:string 必选参数 对应刷新token时,只支持grant_type=refresh_token

refresh_token:string 必选参数 刷新token(之前登录时调用接口获取的返回字段值),用于获取新的access_token


首先我们通过一个WebView来显示授权页面获取授权码根据优酷文档的说明(http://open.youku.com/docs/api_oauth_code.html)我们需要使用http方法get的方式来获取授权码,所需参数及说明请各位小伙伴查看上面的文档哈,这里就不赘述了,下面看代码:


布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>


代码:

import android.content.Intent;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.feimo.mgrechelper.tools.BaseActivity;
public class GetCodeActivity extends BaseActivity {
    private WebView webview;
    private String strCode;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
setContentView(R.layout.webview);      // 设置Web视图
        webview =(WebView)findViewByid(R.id.webview1);
//下面这个链接大家可只要把client_id及redirect_uri后面的值换成我们申请优酷开发者帐号时优酷提供的及我们设置的回调地址就可以 ,我的是乱写的
        webview.loadUrl("https://openapi.youku.com/v2/oauth2/authorize?client_id=8afc1sdfaqwer1231&response_type=code&redirect_uri=http://www.baidu.com/youku.html&state=xyz");

        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                view.loadUrl(url);
                String[] str = null;
                str = url.split("=")[1].split("&");
                strCode = str[0];
                Intent it = new Intent();
                it.putExtra("code"strCode);
                it.setClass(GetCodeActivity.this, MainActivity.class);
                startActivity(it);
                return false;
            }
        });
    }
}  


通过对方法中url进行解析来获取code码,获得code码后,接下来我们来看下怎么获取access_token码:


首先从优酷api文档我们可以知道,它需要我们通过http的post方法来请求数据,并且返回的是一个json格式的数据,前面我们已经获得了code码,至于其它需要的参数都是我们注册时优酷提供的,下面我们来看下具体的实现:


private String getToken() {
        // TODO Auto-generated method stub
        String strUrl = "https://openapi.youku.com/v2/oauth2/token";
        HttpPost httpPost = new HttpPost(strUrl);
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("client_id"client_id));//你申请优酷的client_id
        params.add(new BasicNameValuePair("client_secret"client_secret));//你申请优酷的client_secret
        params.add(new BasicNameValuePair("grant_type"grant_type));
        params.add(new BasicNameValuePair("code"code));//刚刚获取到的code
        params.add(new BasicNameValuePair("redirect_uri"redirect_uri));//回调地址,必须跟网站的一样
        HttpResponse httpResponse = null;
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
            httpResponse = new DefaultHttpClient().execute(httpPost);
            if (httpResponse.getStatusLine().getStatusCode() == 200) {
                String result = EntityUtils.toString(httpResponse.getEntity());
                System.out.println(result);
                JSONObject object = new JSONObject(result);
                access_token = object.getString("access_token");//access_token获取成功
                return access_token;
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }  


通过上述方法,我们可以很简单地获取优酷上传视频所需要的access_token,获取了access_token以后,我们就可以将access_token设置到params的参数中,这样我们就能实现上传视频到优酷了!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值