在Safari中,该按钮会打开一个带有Google登录页面的新选项卡(桌面d出窗口),然后通过postMessage与SoundCloud选项卡进行通信.如果您使用iOS Safari应用程序,此登录流程可以正常工作,但在SFSafariVIEwController中失败(单击该按钮会转到带有Google网址的白页:@R_419_6822@s://accounts.Google.com/o/oauth2/auth?.. ).
现在我的解决方法是建议使用Google的用户点击SFSafariVIEwController上的Safari图标来完成Safari应用程序中的登录流程,但我想知道是否有办法在不离开我的应用程序的情况下处理此问题.
解决方法 好吧,如果我使用UIWebVIEw,您可以在用户通过Google进行身份验证后从谷歌获取最终的oauth响应.但是,我们如何将其转回SoundCloud(例如soundcloud.com/connect/via/Google_plus/returning)- (voID) webVIEwDIDFinishLoad:(UIWebVIEw*)inWebVIEw { Nsstring* str = [inWebVIEw stringByEvaluatingJavaScriptFromString:@"document.getElementByID('response-form-encoded').value"]; if ( str.length > 0 ) { NSDictionary* params = parseURLParams( str ); NSLog( @"%@",params ); }}
输出:
{ "access_token" = "ya2...<removed>...4g"; authuser = 0; code = "4/sU_g7....<removed>...fnRELA"; "expires_in" = 3600; "ID_token" = "eyJhb...<removed>...DA"; prompt = none; scope = "@R_419_6822@s://www.GoogleAPIs.com/auth/userinfo.email+@R_419_6822@s://www.GoogleAPIs.com/auth/plus.login+@R_419_6822@s://www.GoogleAPIs.com/auth/userinfo.profile+@R_419_6822@s://www.GoogleAPIs.com/auth/plus.moments.write+@R_419_6822@s://www.GoogleAPIs.com/auth/plus.me+@R_419_6822@s://www.GoogleAPIs.com/auth/plus.profile.agerange.read+@R_419_6822@s://www.GoogleAPIs.com/auth/plus.profile.language.read+@R_419_6822@s://www.GoogleAPIs.com/auth/plus.circles.members.read"; "session_state" = "c8703a085b885bbe8c8d0e29277b0c2fdf9c6c87..65aa"; state = "392921654%7C0.288515904"; "token_type" = Bearer;}
启动谷歌登录步骤的URL如下所示 – 为方便起见,我已解码下面的URL转义编码:
@R_419_6822@s://accounts.Google.com/o/oauth2/auth?clIEnt_ID=984739005367.apps.Googleusercontent.com&response_type=code token ID_token gsession&scope=@R_419_6822@s://www.GoogleAPIs.com/auth/userinfo.email @R_419_6822@s://www.GoogleAPIs.com/auth/plus.login @R_419_6822@s://www.GoogleAPIs.com/auth/userinfo.profile&state=425511939|0.2912748339&access_type=offline&request_visible_actions=@R_419_6822@://schemas.Google.com/AddActivity @R_419_6822@://schemas.Google.com/ListenActivity @R_419_6822@://schemas.Google.com/CreateActivity&after_redirect=keep_open&cookie_policy=single_host_origin&prompt=none&include_granted_scopes=true&proxy=oauth2relay751149297&redirect_uri=postmessage&origin=@R_419_6822@s://soundcloud.com&gsiwebsdk=1&authuser=0&Jsh=m;/_/scs/apps-static/_/Js/k=oz.gAPI.en.TA32fes-0yU.O/m=__features__/am=AQ/rt=j/d=1/rs=AGLTcCOuWxpcbMjoomrZx_gBsAG8J20NLA总结
以上是内存溢出为你收集整理的ios – 处理SFSafariViewController中的d出窗口/选项卡全部内容,希望文章能够帮你解决ios – 处理SFSafariViewController中的d出窗口/选项卡所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)