博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用Ubuntu online account API创建微博HTML5申请书
阅读量:5773 次
发布时间:2019-06-18

本文共 9615 字,大约阅读时间需要 32 分钟。

在这篇文章中。我们将使用Ubuntu SDK提供来訪问微博的API并显示所须要的内容。这篇文章的重点是展示怎样在HTML 5中使用online account API。我们将创建一个简单的HTML 5应用。我们终于显示的画面例如以下:

  

很多其它关于HTML5应用开发的资料能够在地址:

1)创建一个最主要的应用

我们还是像曾经一样使用我们的Ubuntu SDK来创建一个最主要的weibo HTML 5应用。

  
  
这样我们就创建了一个最主要的weibo HTML 5应用。

你能够使用热键Ctrl + R来执行它尽管它并不能做什么事。

2)增加online account所须要的文件

我们能够參考 来对 有更深的了解。为了可以訪问。须要创建例如以下的文件:
1)
weibo.application

Weibo scope
weibo.ubuntu_weibo.desktop
Watch your favorite Weibo messages
2)
weibo.service

> <service> <type>sharing</type> <name>Weibo scope</name> <icon>html5-weibo.png</icon> <provider>html5-weibo.ubuntu_account-plugin</provider> <translations>unity-scope-weibo</translations> </service><strong> </strong>

3)
创建一个plugin文件文件夹并在它的以下创建
 a)Main.qml, 它的内容为:
import Ubuntu.OnlineAccounts.Plugin 1.0OAuthMain {}
    b) qml-weibo.ubuntu_plugin.provider,它的内容为:

> <provider> <name>Weibo</name> <icon>weibo.png</icon> <translations>unity-scope-weibo</translations> <plugin>generic-oauth</plugin> <domains>.*weibo\.com</domains> <single-account>true</single-account> <template> <group name="auth"> <setting name="method">oauth2</setting> <setting name="mechanism">web_server</setting> <group name="oauth2"> <group name="web_server"> <setting name="Host">api.weibo.com</setting> <setting name="AuthPath">oauth2/authorize</setting> <setting name="TokenPath">oauth2/access_token</setting> <setting name="RedirectUri">https://api.weibo.com/oauth2/default.html</setting> <setting name="ResponseType">code</setting> <setting name="ClientId">Your developer key</setting> <setting type="as" name="AllowedSchemes">['https','http']</setting> <setting name="ClientSecret">Your developer secret</setting> <setting name="ForceClientAuthViaRequestBody" type="b">true</setting> </group> </group> </group> </template> </provider>

在上面的文件里一定要输入自己的“
your developer key”及“
your developer secret”。这个你须要在 的站点上去申请。整个文件的架构为:
4)
改动manifest.json文件例如以下
{    "name": "html5-weibo.ubuntu",    "description": "description of html5-weibo",    "architecture": "all",    "title": "html5-weibo",    "hooks": {        "html5weibo": {            "apparmor": "html5weibo.apparmor",            "desktop": "html5weibo.desktop",            "account-application": "weibo.application",            "account-service": "weibo.service"        },        "account-plugin": {            "account-provider": "plugin/html5-weibo.ubuntu_account-plugin.provider",            "account-qml-plugin": "plugin/qml"        }    },    "version": "0.1",    "maintainer": "XiaoGuo, Liu 
", "framework": "ubuntu-sdk-14.10"}
这里加入了account及plugin的一些设置。

5)
为了可以让.service,.application及.provider文件能正常得到显示,我们对“qml-weibo.qmlproject”加入例如以下的东西
Files {        filter: "*.service"    }    Files {        filter: "*.application"    }    Files {        filter: "*.provider"    }
到这里,我们已经基本上已经改动或加入好我们所须要的文件。

3)设计应用的UI

改动我们的“index.html”文件:
    
An Ubuntu HTML5 application
这里的UI很easy,我仅仅使用了一个list控件。我们大部分的代码将在“app.js”中实现:
var token = '';window.onload = function () {    console.log("this is so cool....!")    var UI = new UbuntuUI();    UI.init();    UI.pagestack.push('main');    var api = external.getUnityObject('1.0');    var oa = api.OnlineAccounts;    // UI.button('getstatus').click(auth);    auth();    function auth() {        console.log("getstatus button is clicked!");        var filters = {'provider': 'html5-weibo.ubuntu_account-plugin', 'service': ''};        oa.api.getAccounts(filters, function(accounts) {            console.log("total length: " + accounts.length);            if (accounts.length < 1) {                // setResults('No accounts available');                oa.api.requestAccount(                    "html5-weibo.ubuntu_html5weibo",                    unescape("html5-weibo.ubuntu_account-plugin"),                    function() {                        console.log("requestAccount callback...");                        auth();                });                return;            } else {                // setResults("Available accounts: " + accounts.length);            }            function authcallback(res) {                token = res['data']['AccessToken'];                console.log("AccessToken: " + token);//                setResults("AccessToken: " + token);                getWeiboStatus(token, function(statuses) {                    console.log("the length: " + statuses.length);                    if (statuses) {                        // create the 'ul' element                        var ul = document.createElement('ul');//                        var results = document.getElementById('results');                        var results = document.querySelector('#results');                        var statuslist = document.querySelector('#statuslist');                        var ul = document.createElement('ul');                        for (var i = 0; i < statuses.length; i ++) {                            var li = document.createElement('li');                            ul.appendChild(li);                            var aside = document.createElement('aside');                            li.appendChild(aside);                            var img = document.createElement('img');                            img.setAttribute('src', statuses[i]['profile_image_url']);                            img.setAttribute('width', "50");                            img.setAttribute('height', "50");                            aside.appendChild(img);                            var a = document.createElement('a');                            a.setAttribute('href', '#');                            a.innerHTML = statuses[i]['text'];                            li.appendChild(a);                            var right = document.createElement('label');                            right.innerHTML = ""                            li.appendChild(right);                        }                        console.log("it is done6");                        statuslist.appendChild(ul);                    }                    else {                        setResults('
ERROR'); } }); } accounts[0].authenticate(authcallback); }); //getAccounts } //auth function getWeiboStatus(accessToken, callback) { var http = new XMLHttpRequest() var url = "https://api.weibo.com/2/statuses/home_timeline.json?access_token=" + accessToken + "&page=" + 1 console.log('url: \n' + url) http.open("GET", url, true); var statuses = []; http.onreadystatechange = function() { if (http.readyState === 4){ if (http.status == 200) { var response = JSON.parse(http.responseText); console.log("it succeeds! lenght: " ); for (i = 0; i < response['statuses'].length; i++ ) { var time = JSON.stringify(response['statuses'][i]['created_at']);// console.log("time: " + time ); var text = JSON.stringify(response['statuses'][i]['text']);// console.log("text: " + text); var name = JSON.stringify(response['statuses'][i]['user']['name']);// console.log("name: " + name); var profile_image_url = JSON.stringify(response['statuses'][i]['user']['profile_image_url']); profile_image_url = profile_image_url.slice(1, profile_image_url.length-1);// console.log("profile_image_url: " + profile_image_url); var id = JSON.stringify(response['statuses'][i]['idstr']); statuses.push({'time': time, 'text': text, 'name': name, 'id': id, 'profile_image_url': profile_image_url}); } callback(statuses); } else { console.log("error: " + http.status) callback(null); } } }; http.send(null); } function setResults(data) { var results = document.getElementById('results'); results.innerHTML = data; };}; //onload
我们能够使用例如以下的句子来得到online account API的接口:
var api = external.getUnityObject('1.0');   var oa = api.OnlineAccounts;
在这里,我们使用HTML 5的 来检查是否有例如以下的provider:
var filters = {'provider': 'html5-weibo.ubuntu_account-plugin', 'service': ''};
假设没有。我们使用例如以下的代码来创建weibo账号:
if (accounts.length < 1) {                // setResults('No accounts available');                oa.api.requestAccount(                    "html5-weibo.ubuntu_html5weibo",                    unescape("html5-weibo.ubuntu_account-plugin"),                    function() {                        console.log("requestAccount callback...");                        auth();                });                return;            }
等创建成功了,我们使用“auth()”来得到訪问weibo的access token。进而我们能够得到我们所须要的不论什么的信息。
被创建的账号,能够在“系统设置”里的“账号”中能够看到:
另外我们能够在手机或模拟器中的例如以下的文件夹中看到我们所创建的文件:
整个项目的源代码在:git clone https://gitcafe.com/ubuntu/html5weibo.git

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
OPENCC linux安装(php_opencc.so编译)
查看>>
Python URL中文的编解码
查看>>
centos安装msmtp,利用gmail发送
查看>>
asp.net application life cycle
查看>>
Spark的性能调优
查看>>
入职新人技术引导之我见
查看>>
linux下mongo启动关闭重启方法
查看>>
一些网站
查看>>
语音特征参数MFCC提取过程详解
查看>>
使用GitHub进行版本管理
查看>>
如何选择适合你的渲染软件
查看>>
c++动态规划解决硬币换零钱的问题
查看>>
Qt下几个线程函数介绍
查看>>
Passware Kit和AOPR哪个更厉害?
查看>>
:focus 选择器用于选取获得焦点的元素。
查看>>
从MySQL全库备份中恢复某个库和某张表
查看>>
spark-性能调优
查看>>
Loading XML with Javascript
查看>>
Sublime配置Python3运行环境
查看>>
路由器密码破解记
查看>>