我有业务需要能够为嵌入式UIWebView自定义UserAgent.(例如,如果用户使用的是应用程序的一个版本而不是另一个版本,我希望服务器以不同的方式做出响应.)
是否可以在现有的UIWebView控件中自定义UserAgent,例如,对于Windows应用程序中的嵌入式IE浏览器?
我正在尝试在IOS应用中授权用户使用Google日历API.我正在使用Google的OAuth2功能对用户进行身份验证.将打开授权页面,其中包含描述403错误:
此用户代理不允许向Google发出OAuth授权请求,因为它被归类为嵌入式用户代理(也称为Web视图).根据我们的政策,只允许浏览器向Google发出授权请求.我们为本机应用提供了几个库和示例,以便在浏览器中执行授权请求.
我按照此链接中提到的相同步骤操作:https://developers.google.com/google-apps/calendar/quickstart/ios
不要看我的代码,最好查看以下链接:https: //developers.google.com/google-apps/calendar/quickstart/ios, 因为我在我的应用程序中复制粘贴相同的内容.
下面是我的clientId和keyChainItemName:
static NSString *const kKeychainItemName = @"Google Calendar API";
static NSString *const kClientID = @"954370342601-sgl8k0jrbqdeagea9v6vfu3tspte96ci.apps.googleusercontent.com";
Run Code Online (Sandbox Code Playgroud) 我为iOS和Android开发了一个应用程序,它使用应用程序内浏览器(Webview)从我的网络服务器访问HTML文件.
我不希望用户在不使用该应用程序的情况下访问此文件.如果用户使用应用程序访问文件或直接通过智能手机/平板电脑/计算机上的浏览器,是否有可能检测到?我认为使用PHP的解决方案要好得多,因为可以关闭Javascript.至少Google Analytics可以区分Safari和Safari(应用内).它应该适用于iOS和Android的每个版本.
谢谢你的帮助.
解
经过多次尝试,我终于找到了适合我的解决方案!
iOS: 您可以使用用户代理检测Safari和应用内浏览器之间的差异.可能有一个更好的解决方案,但它的工作原理.
// Safari (in-app)
if ((strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile/') !== false) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Safari/') == false) {
echo 'Safari (in-app)';
}
Run Code Online (Sandbox Code Playgroud)
Android:
应用程序中的包名称存储在PHP变量中$_SERVER['HTTP_X_REQUESTED_WITH'].
// Android (in-app)
if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app") {
echo 'Android (in-app)';
}
Run Code Online (Sandbox Code Playgroud)
正如Tim van Elsloo已经注意到HTTP标头可以伪造,这不是绝对安全的.
这真让我抓狂.我有两个应用程序只是UIWebViews,使用XCode 4.5.2和iOS 6.0 SDK.我想更改Web调用的UserAgent.我在两者中使用此代码:
NSString *secretagent = @"MyUserAgent";
NSDictionary *dictionary = [[NSDictionary alloc]
initWithObjectsAndKeys:secretAgent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
Run Code Online (Sandbox Code Playgroud)
根据我对网络日志的扫描,杀死我的是它在一个而不是另一个中工作.根据我对objectsForKey:@"UserAgent"的检查,无效的那个仍然会改变UserAgent键.只是网络请求实际上没有任何变化.
有任何想法吗?现在是凌晨3:30,我无法弄清楚这一点......
ios ×4
iphone ×2
uiwebview ×2
android ×1
cocoa-touch ×1
google-oauth ×1
javascript ×1
php ×1
user-agent ×1
xcode ×1