2013-05-31 22 views
2

我试图在Android和iOS使用谷歌OAuth2以谷歌驱动器认证。我有一个使用ChildBrowser在Android上工作的解决方案,但它在iOS上无法使用。 PhoneGap Build支持建议我使用InAppBrowser,因为ChildBrowser已折旧。是否有PhoneGap的InAppBrowser一个locationChange equlivent像ChildBrowser

我能得到iOS和Android都提示我的用户ID /密码,然后显示“允许访问”所有InAppBrowser按钮给GOOGL驱动器的访问。在Android攻击“允许访问”按钮中,网址中的正确代码和OAuth令牌会导致网页不可用。当使用子浏览器时,这是允许您检查代码4并获取令牌的更改事件。 InAppBrowser仅具有LoadStart,LoadStop和Exit事件。

如何我可以检查谷歌返回URL成功/失败和成功,如果抢令牌?

感谢任何及所有的帮助!

回答

0

下面是我如何使用InAppBrowser做Facebook的身份验证。因为你只是试图抓住一个值出来的URL,就应该工作方式相同:

var fb = { 
    id: '...' 
    ,secret: '...' 
    ,namespace: '...' 
    ,redirect: '...' 
    ,display: 'touch' 
    ,scope: ['publish_actions'] 

    ,windowRef: null 
    ,code: null 
    ,onLoadEvent: function(event){ 
     var url = event.url; 
     console.log(url); 

     //once we've been redirected to this domain, fb's job is done 
     if (/my.domain.com/.test(url)){ 

      if (/code=/.test(url)){ 
       //auth done 
       var code = url.match(/code=([^\&]+)/) 
       if (code) code = code[1]; 
       window.fb.code = code; 
       window.fb.windowRef.close(); 
      }else if (/error_description=/.test(url)){ 
       //login unsuccessful 
       var error = url.match(/error_description=([^\&]+)/); 
       if (error) error = error[1].replace(/[^A-Z0-9 ]/gi, " "); 
       console.error("facebook login failed: " + error); 
       window.fb.code = null; 
       window.fb.windowRef.close(); 
      } 

     } 
    } 
}; 

var authUrl = "https://graph.facebook.com/oauth/authorize?" 
      + "client_id=" + fb.id 
      + "&redirect_uri=" + encodeURI(fb.redirect) 
      + "&display=" + fb.display 
      + "&scope=" + fb.scope.join('%2C'); 

fb.windowRef = window.open(authUrl, '_blank', loginPopupOptions); 

//no reason we can't use the same function twice... 
fb.windowRef.addEventListener('loadstart', fb.onLoadEvent); 
fb.windowRef.addEventListener('loadstop', fb.onLoadEvent); 

我试图把只有相关位我们的结构,所以希望它是有道理这样.. 。

相关问题