OAuthQ开放授权)是一?a class="new" title="开放标? style="text-decoration: none; color: #ba0000; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; ">开放标?/a>Q允许用戯W三方应用访问该用户在某一|站上存储的U密的资源(如照片,视频Q联pMh列表Q,而无需用户名和密码提供给W三方应用?/p>
OAuth允许用户提供一个o牌,而不是用户名和密码来讉K他们存放在特定服务提供者的数据。每一个o牌授权一个特定的|站Q例如,视频~辑|站)在特定的时段Q例如,接下来的2时内)内访问特定的资源Q例如仅仅是某一相册中的视频Q。这POAuth允许用户授权W三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的讉K许可或他们数据的所有内宏V?/p>
使用OAuthq行认证和授权的q程如下所C?
OAuth 2.0是OAuth协议的下一版本Q但不向后兼容OAuth 1.0?OAuth 2.0x客户端开发者的易性,同时为Web应用Q桌面应用和手机Q和起居室设备提供专门的认证程。规范还在IETF OAuth工作l的开发中 Q按?a class="new" title="Eran Hammer-Lahav" style="text-decoration: none; color: #ba0000; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; ">Eran Hammer-Lahav的说法,OAuth于2010q末完成?/p>
Facebook的新的Graph API只支持OAuth 2.0QGoogle?font class="Apple-style-span" color="#0645ad">2011q??/span>亦宣佈Google APIOAuth 2.0的支援?/p>
名称
RESTQ即Representational State Transfer的羃写。我对这个词l的译?表现层状态{??/p>
如果一个架构符合REST原则Q就U它为RESTful架构?/p>
要理解RESTful架构Q最好的Ҏ是ȝ解Representational State Transferq个词组到底是什么意思,它的每一个词代表了什么涵义?/strong>如果你把q个名称搞懂了,也就不难体会REST是一U什么样的设计?/p> 资源QResourcesQ?/strong> REST的名U?表现层状态{?中,省略了主语?表现?其实指的?资源"QResourcesQ的"表现??/p> 所?资源"Q就是网l上的一个实体,或者说是网l上的一个具体信息?/strong>它可以是一D|本、一张图片、一首歌曌Ӏ一U服务,M是一个具体的实在。你可以用一个URIQ统一资源定位W)指向它,每种资源对应一个特定的URI。要获取q个资源Q访问它的URI可以,因此URI成了每一个资源的地址或独一无二的识别符?/p> 所?上网"Q就是与互联|上一pd?资源"互动Q调用它的URI?/p> 表现层(RepresentationQ?/strong> "资源"是一U信息实体,它可以有多种外在表现形式?strong style="font-weight: 800; ">我们?资源"具体呈现出来的Ş式,叫做它的"表现?QRepresentationQ?/strong> 比如Q文本可以用txt格式表现Q也可以用HTML格式、XML格式、JSON格式表现Q甚臛_以采用二q制格式Q图片可以用JPG格式表现Q也可以用PNG格式表现?/p> URI只代表资源的实体Q不代表它的形式。严格地_有些|址最后的".html"后缀名是不必要的Q因个后~名表C格式,属于"表现?范畴Q而URI应该只代?资源"的位|。它的具体表现Ş式,应该在HTTPh的头信息中用Accept和Content-Type字段指定Q这两个字段才是?表现?的描q?/p> 状态{化(State TransferQ?/strong> 讉K一个网站,׃表了客户端和服务器的一个互动过E。在q个q程中,势必涉及到数据和状态的变化?/p> 互联|通信协议HTTP协议Q是一个无状态协议。这意味着Q所有的状态都保存在服务器端。因此,如果客户端想要操作服务器Q必通过某种手段Q让服务器端发生"状态{?QState TransferQ。而这U{化是建立在表现层之上的,所以就?表现层状态{??/strong> 客户端用到的手段Q只能是HTTP协议。具体来_是HTTP协议里面Q四个表C操作方式的动词QGET、POST、PUT、DELETE。它们分别对应四U基本操作:GET用来获取资源QPOST用来新徏资源Q也可以用于更新资源Q,PUT用来更新资源QDELETE用来删除资源?/strong> lD l合上面的解释,我们ȝ一下什么是RESTful架构Q?/p> Q?Q每一个URI代表一U资源; Q?Q客L和服务器之间Q传递这U资源的某种表现层; Q?Q客L通过四个HTTP动词Q对服务器端资源q行操作Q实?表现层状态{??/p> 误区 RESTful架构有一些典型的设计误区?/p> 最常见的一U设计错误,是URI包含动词?/strong>因ؓ"资源"表示一U实体,所以应该是名词QURI不应该有动词Q动词应该放在HTTP协议中?/p> 举例来说Q某个URI?posts/show/1Q其中show是动词,q个URIp计错了,正确的写法应该是/posts/1Q然后用GETҎ表示show?/p> 如果某些动作是HTTP动词表示不了的,你就应该把动作做成一U资源。比如网上汇ƾ,从̎?向̎?汇款500元,错误的URI是: POST /accounts/1/transfer/500/to/2 正确的写法是把动词transferҎ名词transactionQ资源不能是动词Q但是可以是一U服务: POST /transaction HTTP/1.1 另一个设计误区,是在URI中加入版本号Q?/p> http://www.example.com/app/1.0/foo http://www.example.com/app/1.1/foo http://www.example.com/app/2.0/foo 因ؓ不同的版本,可以理解成同一U资源的不同表现形式Q所以应该采用同一个URI。版本号可以在HTTPh头信息的Accept字段中进行区分(参见Versioning REST ServicesQ: Accept: vnd.example-com.foo+json; version=1.0 Accept: vnd.example-com.foo+json; version=1.1 Accept: vnd.example-com.foo+json; version=2.0
Host: 127.0.0.1
from=1&to=2&amount=500.00
原帖Qhttp://www.ruanyifeng.com/blog/2011/09/restful.html
]]>
main.js / navigator.notification.vibrate(0);
notification.js / Notification.vibrate.vibrate 中执行了 PhoneGap.exec(null, null, "Notification", "vibrate", [mills]);
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result)
一 序列化原因:
1.怹性保存对象,保存对象的字节序列到本地文g中;
2.通过序列化对象在|络中传递对象;
3.通过序列化在q程间传递对象?nbsp;
?至于选取哪种可参考下面的原则Q?/span>
1.在用内存的时候,Parcelable cLSerializable性能高,所以推荐用ParcelablecR?br style="line-height: 25px; " />2.Serializable在序列化的时候会产生大量的时变量,从而引起频J的GC?br style="line-height: 25px; " />3.Parcelable不能使用在要数据存储在盘上的情况Q因为Parcelable不能很好的保证数据的持箋性在外界有变化的情况下。尽Serializable效率低点Q?也不提倡用Q但在这U情况下Q还是徏议你用Serializable ?/span>
3 修改AndroidManifest.xmlQ把该Activityd android:configChanges="orientation"Q切横屏Q只销毁一ơ?/p>
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onConfigurationChanged
5 更改 android:configChanges="orientation" Ҏ android:configChanges="orientation|keyboardHidden"Q切横屏Q就只打印onConfigChanged
onConfigurationChanged
6 切回竖屏
onConfigurationChanged
onConfigurationChanged
ȝQ?/p>
1、不讄Activity的android:configChangesӞ切屏会重新调用各个生命周期,切横屏时会执行一ơ,切竖屏时会执行两?/p>
2、设|Activity的android:configChanges="orientation"Ӟ切屏q是会重新调用各个生命周期,切横、竖屏时只会执行一?/p>
3、设|Activity的android:configChanges="orientation|keyboardHidden"Ӟ切屏不会重新调用各个生命周期Q只会执行onConfigurationChangedҎ