//{+oauth2"OAuth2 サービスの定義"(OAuth2外部サービスを定義し、認可プロセス・xhrの署名を自動化します)[+xhr]
-var X_NET_OAUTH2_detection = new Function( 'w', 'try{return w.location.search}catch(e){}' ),
- X_NET_OAUTH2_authorizationWindow,
+var X_NET_OAUTH2_authorizationWindow,
X_NET_OAUTH2_authorizationTimerID;
/**
'Constructor' : function( obj ){
var expires_at;
- obj = X_Object_clone( obj );
+ obj = X_Object_copy( obj );
obj[ 'refreshMargin' ] = obj[ 'refreshMargin' ] || 300000;
X_Pair_create( this, obj );
* アクセストークンのリフレッシュ。
*/
'refreshToken' : function(){
- var pair = X_Pair_get( this );
+ var pair = X_Pair_get( this ),
+ refreshToken = X_OAuth2_getRefreshToken( this );
+
+ if( !refreshToken ){
+ pair.oauth2State = 0;
+ this[ 'asyncDispatch' ]( X_EVENT_NEED_AUTH );
+ return;
+ };
if( pair.net ) return;
'client_id' : pair[ 'clientID' ],
'client_secret' : pair[ 'clientSecret' ],
'grant_type' : 'refresh_token',
- 'refresh_token' : X_OAuth2_getRefreshToken( this )
+ 'refresh_token' : refreshToken
}),
'dataType' : 'json',
'headers' : {
this[ 'asyncDispatch' ]( X_EVENT_CANCELED );
} else
- if( search = X_NET_OAUTH2_detection( X_NET_OAUTH2_authorizationWindow ) ){
+ if( search = X_Script_try( X_Object_find, [ X_NET_OAUTH2_authorizationWindow, 'location>search' ] ) ){
pair = X_Pair_get( this );
- pair.code = X_URL_ParamToObj( search.slice( 1 ) )[ 'code' ];
+ pair.code = X_URL_paramToObj( search.slice( 1 ) )[ 'code' ];
if( 9 < X_UA[ 'IEHost' ] ){
X_NET_OAUTH2_authorizationWindow.close();
X_NET_OAUTH2_authorizationWindow = null;
X_NET_OAUTH2_authorizationTimerID = 0;
- return X_Callback_UN_LISTEN;
+ return X_CALLBACK_UN_LISTEN;
};
};
function X_OAuth2_getAccessToken( that ){ return X_OAuth2_updateLocalStorage( '', that, 'accessToken' ); }
function X_OAuth2_getRefreshToken( that ){ return X_OAuth2_updateLocalStorage( '', that, 'refreshToken' ); }
-function X_OAuth2_getAccessTokenExpiry( that ){ return parseInt( X_OAuth2_updateLocalStorage( '', that, 'tokenExpiry' ) ) || 0; }
+function X_OAuth2_getAccessTokenExpiry( that ){ return parseFloat( X_OAuth2_updateLocalStorage( '', that, 'tokenExpiry' ) ) || 0; }
function X_OAuth2_getAuthMechanism( that ){
// TODO use gadget | flash ...
// IE's XDomainRequest doesn't support sending headers, so don't try.
- return ( X_NET_currentWrapper === X_NET_XHRWrapper ) && X_Net_XHR_createXDR ? 'param' : X_OAuth2_updateLocalStorage( '', that, 'AuthMechanism' );
+ return ( X_NET_currentWrapper === X_XHR ) && X_XHR_createXDR ? 'param' : X_OAuth2_updateLocalStorage( '', that, 'AuthMechanism' );
}
function X_OAuth2_setAccessToken( that, value ){ X_OAuth2_updateLocalStorage( '+', that, 'accessToken' , value); }
function X_OAuth2_setRefreshToken( that, value ){ X_OAuth2_updateLocalStorage( '+', that, 'refreshToken', value); }