Tag: 谷歌 OAuth

Facebook的iOS SDK:login到Facebook,而不总是要求申请的权限

我在我的应用程序中使用Facebook iOS SDK,我有两个类似的问题: 有什么方法可以知道当前是否有用户login? 我现在使用的是在成功login时存储访问令牌和过期date,并在应用程序启动时加载它们。 我的问题是:如果会话无效,我可以给用户提供login的选项, 而不必每次都询问权限吗? 因为现在,每次我想login我都会收到我已经给我的应用程序的权限的消息。 而且我只想在没有这个部分的情况下login。 有任何想法吗?

authentication不适用于谷歌应用程序

我在使用homeServerClientID和身份validation时遇到了一些麻烦,我可以在谷歌示例中重现。 问题是: 情况1:如果我有谷歌应用程序已经安装 我从我的应用程序点击loginbutton 它在谷歌应用程序帐户select打开帐户 authentication后,它切换回我的应用程序 在finishedWithAuth委托方法中出错(com.google.HTTPStatus错误400) 情况2: Google应用程序未安装 与Safari浏览器身份validation工作正常。 码: GPPSignIn *signIn = [GPPSignIn sharedInstance]; signIn.shouldFetchGooglePlusUser = YES; signIn.shouldFetchGoogleUserEmail = YES; signIn.clientID = @"XXXXX.apps.googleusercontent.com"; // Replace dummy XXXX // Your server's OAuth 2.0 client ID signIn.homeServerClientID = @"YYYYY.apps.googleusercontent.com"; // Replace dummy YYYY signIn.scopes = @[@"https://www.googleapis.com/auth/calendar"]; signIn.delegate = self; 而且我正在打电话 [[GPPSignIn sharedInstance] authenticate]; 代表: – […]

从Google / Facebook帐户重新validation用户

所以我需要创build一个REST API来为IOS应用程序提供function。 我们允许用户使用简单的帐户或Facebook / Googlelogin注册 。 最近我一直在阅读OAuth,并且我想我理解如何在我的情况下(当用户使用Facebook / Googlelogin时 )在我的应用上注册一个帐户时使用OAuth的过程: 我向各种社交提供商(例如FB / Google)注册我的IOS应用程序。 我终于安全地存储在后端的客户端ID /客户端密钥。 现在,用户点击应用程序上的社交loginbutton,然后将用户redirect到社交网站login并授予我的应用程序使用他们的社交帐户的权限。 社交oauth提供商将用授权码将用户redirect回我的服务器。 一旦我的服务器有授权码,我将使用这个,客户端ID和秘密(或任何其他特定的证书需要)从社交oauth提供者检索访问令牌。 现在我有用户的访问令牌,并可以使用他们的社交资源一段时间(耶)。 一旦我有他们的社交访问令牌,然后我发出一个生成的访问令牌的应用程序使用请求时,我的REST API(应用程序将只与我的REST API从现在)沟通。 我的问题: 上述过程是一个好的做法吗? 比方说,用户从应用程序注销(而不是从他们的社交帐户!)。 我仍然有他们的社交访问令牌,但我摧毁了我发给他们使用我的REST API的另一个标记。 现在用户回来login到我的应用程序使用社交login(例如Fb /谷歌)。 我将如何重新validation这些用户? 我知道我不需要用户再次提供权限,但是如何知道他们是Fb / Google的合法用户,并且在我的服务器端也有一个帐户? 如果成功login,Fb / Google会提供回应用程序,以便我可以发送回我的服务器:“是的,这个用户是Fb / Google的合法社交用户。” 在上述注册程序中,社会福利提供者将提供授权码。 在这种情况下,我会得到什么(后续login)? 基本上, 我需要find一种方法来重新发布访问令牌到我的REST API,以成功地在应用程序的FB / Google用户中重新注册。

Google Drive API:以编程方式login

我正在开发将file upload到Google云端硬盘所需的应用程序。 我从下面的链接开始学习API。 https://developers.google.com/drive/ios/quickstart 目前,我必须首次login上传文件。 但在我的应用程序中,每次有相同的帐户将用于上传文件。 那么,有什么办法可以绕过GTMOAuth2ViewControllerTouch(login屏幕)。 请帮帮我。 我将非常感谢您的重播。

Google跨客户端身份validation是否可以在iOS上使用,如果是这样的话,如何?

我正在使用oAuth2,并且在我的google API控制台中有一个iOS客户端和一个Web客户端注册的项目。 我想从我的iOS应用程序进行身份validation,并让我的Web后端检索访问令牌,以便使用Google API执行繁重的处理工作。 我试过按照以下这些针对android的说明: https : //developers.google.com/accounts/docs/CrossClientAuth 但是当我把范围赋值为: oauth2:server:client_id:MY.WEB.CLIENT.ID:api_scope: http : //www.google.com/m8/feeds/ https://mail.google.com/ https://www.googleapis.com/ AUTH / plus.login 任何人都成功实现了类似的iOS设置? 如果是这样,请解释或共享文档? 您使用哪些库或SDK从iOS应用程序获取Google的代码,以便Web后端可以使用它来生成适当的访问令牌?

iOS Google Drive SDK使用关键“webContentLink”将文件加载到UIWebView中

我使用Google Drive SDK在我的iOS应用中实现了与Google云端硬盘的远程连接。 我可以使用GTLServiceDrive类成功访问文件/文件夹列表和元数据,并使用GTLServiceDrive类下载内容。 当我使用GTMHTTPFetcher类下载内容时,我使用GTLServiceDrive key downloadUrl ,并使用一行代码来授权下载 – 按照以下第二行代码进行授权: GTMHTTPFetcher *fetcher = [googleDriveService.fetcherService fetcherWithURLString: << downloadUrl >>]; [fetcher setAuthorizer:googleDriveService.authorizer]; 其中googleDriveService是GTLServiceDrive类的一个实例。 对于位于Google云端硬盘上的某些文件,我可以从两个选项中select我的应用的用户 – 无论他们是要下载副本以保存在设备上,还是仅使用GTLServiceDrive关键字webContentLink维护引用并按需访问内容(无需下载并保存到文档或高速caching)。 对于第二个选项, 我希望我的应用程序在UIWebView显示文件 。 它几乎与以下代码一起工作… …other code to prepare UIWebView… NSURLRequest *request = [NSURLRequest requestWithURL: << webContentLink >>]; [webView loadRequest:request]; 加载Web视图,但提出了OAuthlogin页面,我猜是因为loadRequest:方法要求未经授权访问私人文件。 我注意到… 我已经在初始连接(安装过程)期间设置了OAuth钥匙串项目以检索文件夹&文件列表和元数据。 一旦我第二次使用第二个OAuth视图控制器login,该login看起来会持续下去(不再需要),包括设备closures和重启之后。 也许第二个钥匙链项目自动添加? 是否有一些方法可以使用,类似GTMHTTPFetcher类的authorize属性,允许我在UIWebView显示Google Drive文件,但不要求用户完成第二次login,虽然他们被要求做第二次login只有一次?

是否有可能在iOS上使oauth安全?

是否有可能在iOS上使oauth安全? 我正在研究OAuth 2.0作为实现iOS套件“单套”应用程序的单一login+授权的一种手段。 为了解释我的担忧,我将简化并使用Facebook +使用Facebook进行身份validation的第三方应用程序(让我们来说一下“Words with Friends”)。 举例来说,我假设Facebook注册支持scheme / protocol“facebook://”,并且这个Words注册为支持“words://” 我也做了一个假设,即不可能在iOS应用程序中保护“客户机密”或协议,因为您可以反编译应用程序。 我已经想出了任何方法来确保安全性 。 另一个假设是,没有办法阻止两个应用程序注册来处理相同的协议。 两个应用程序都注册相同协议的行为是不确定的。 (虽然看起来设备上启动的第一个应用程序获得注册,而第二个应用程序注册被忽略) 如果我了解iOS设备上的Facebook(用户代理)和Words(客户端)之间的工作stream程,请执行以下操作: 用户启动单词 用户select通过Facebook的凭据login 单词调用openUrl(“facebook://”),其中包含字作为应用程序和redirecturi(即“words://”)的标识符 iOS启动Facebook应用程序 用户input凭证,Facebook应用程序根据Facebook授权服务器进行validation。 用户提示授权单词访问Facebook数据(即单词可以访问我的朋友列表) Facebook调用由字提供的callbackURI以及访问令牌(即words:// access_token?token_here) 单词使用此令牌访问我的朋友列表(即受保护的资源数据) 假设以上是正确的,如果我想恶意访问随机的朋友列表,我可以创build一个应用程序,该应用程序还可以注册以处理协议“words://”并将其存储在app store中。 如果有人安装了我的应用程序和单词,并且我的应用程序是成功注册的(即在单词之前在设备上启动的),那么: 启动Words,selectlogin,启动Facebook 用户authentication/授权 Facebook尝试通过在redirecturl上调用openUrl来redirect到Words 我的应用程序(不是话)启动 我的应用程序现在可以访问auth代码,(通过反编译学到的秘密)可以交换为access_token,有权访问你的朋友列表 我希望我的推理是有缺陷的,否则我必须得出结论(特别是)第三方应用程序的Facebook iOSauthentication是不安全的。 更一般地说, 是否可以在iOS应用程序上安全地实现OAuth 2.0(授权/隐式授权工作stream程)?

Google OAuth不再支持渐进式应用程序?

我有一个渐进的应用程序(定义在https://developers.google.com/web/progressive-web-apps/ ),它刚刚开始得到disallowed_useragent启动谷歌OAuthstream 我发现这个通知https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html 看来,渐进的应用程序不应该被拒绝stream量。 渐进的应用程序不是一个embedded式的web视图,它是相同的网页和没有控制的常规浏览器。 没有本地层,我不能使用原生SDK 渐进networking应用的新推荐方法是什么?

如何在使用Facebook iPhone SDK时刷新oauth标记

我在我的应用程序中使用iOS的Facebook SDK: http : //github.com/facebook/facebook-ios-sdk oAuth令牌在约2小时后过期。 我怎样才能“刷新”oAuth令牌,而不必再次调用[Facebook授权…]方法 – 如果用户以前login过,会简要地显示一个空的Facebook对话框? 我想要避免的是要求用户每次使用应用程序时重新login到FB – 比如每天。 当应用程序退出/启动时,我已经保存/恢复oAuth令牌。 我可以使用[Facebook isSessionValid]来检查令牌是否有效,或者通过检查令牌的过期时间。 但是如果令牌已经过期怎么办? 我读过可以“刷新”令牌,但我不明白这是如何完成的。 我不想要求“offline_access”权限,这会给我一个“永远”的标记。 帮帮我!?

在iOS应用中实现OAuth 1.0

我一整天都在为此而头痛。 我希望将我的iOS应用程序与Withings api集成。 它使用OAuth 1.0,我似乎无法完全理解如何实现它。 我一直在下载多个OAuth framworks( MPOAuth , gtm-oauth , ssoauthkit ),但无法完全弄清楚我应该做什么。 我search了很多,也在堆栈溢出,以便如何在一般情况下实现OAuth 1.0以及与Withings集成,尤其是没有成功。 请解释一下将iOS应用程序与需要OAuth 1.0的api集成的stream程。 代码示例会非常有帮助。 build议的第三方框架也不错。 只是为了澄清,我完全理解OAuth 1.0的原则,我只是在我的应用程序中实际执行它的问题。 我认为,通过代码示例和很好的参考资料的彻底回答将是很多人,因为我找不到一个很有帮助。 如果有人有很好的实施经验,请花时间分享。