Articles of oauth

为什么gmail oauth不能在我的Android应用中运行?

我正在开发一个应用程序,该应用程序执行oauth2身份validation以前的工作,但不幸的是不再起作用。 据我所知(但不是100%肯定)代码没有任何变化,所以我不知道为什么它不再起作用了。 该应用程序创建一个webview并从我们的服务器加载一个url,该url将其重定向到谷歌以对此url进行身份validation(只是更改了客户端ID和我的域名): https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=1234567890-XXXXXXX.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Fexample.com%3A5000%2Fchannel%2Fgmail%2Fcallback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly&access_type=offline 立即将其重定向到: https://accounts.google.com/ServiceLogin?passive=1209600&continue=https://accounts.google.com/o/oauth2/auth?access_type%3Doffline%26scope%3Dhttps://www.googleapis.com/auth/userinfo.email%2Bhttps://www.googleapis.com/auth/gmail.readonly%26response_type%3Dcode%26redirect_uri%3Dhttp://example.com:5000/channel/gmail/callback%26client_id%3D123456789-XXXXX.apps.googleusercontent.com%26hl%3Dnl%26from_login%3D1%26as%3D-2178738b5063e716&ltmpl=popup&oauth=1&sarp=1&scc=1 我们的iOS应用程序使用相同的系统,它就像一个魅力。 所以我们的服务器实现没有任何问题。 webview重定向到谷歌后,它会自动返回到应用程序而不显示任何谷歌屏幕。 我正在使用以下代码打开webview: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_browser_webview, container, false); webView = (WebView) view.findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDisplayZoomControls(false); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setDomStorageEnabled(true); webView.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Log.wtf(“ERROR”, description + ” ” + […]

如何为移动应用程序设计安全API /身份validation以访问服务?

我想提供我的webapp的一些function用于其他应用程序(我主要考虑智能手机,因为它们提供更多function,例如GPS,相机,……)。 从目前为止我遇到的其他API(例如GoogleMaps)来看,第三方开发人员会在我的网站上注册自己,他获得了一个API密钥(一些随机的UUID),他必须用它来validation他的请求。我的网站。 到现在为止还挺好… 是否有机制保护移动应用程序的最终用户免受恶意应用程序的攻击? 例如,第三方开发人员可以构建应用程序并从最终用户捕获所有用户名/密码,这样他就可以使用useraccount做坏事。 (例如,我可以构建一个Twitter应用程序,捕获所有用户名/密码,然后删除所有的推文,发布新的,…)是否有可能阻止这种情况? AFAIK你可以在网上使用oauth,这样我的网站登录框就会出现在另一个网站上并询问他们的用户名/密码,这样它就不会显示给第三方网站。 是否可以为智能手机应用程序实施安全身份validation? 你会怎么做?

使用联合登录(OpenID)从Android应用程序对App Engine进行身份validation

我已经关注了Nick Johnson关于从AndroidvalidationApp Engine的教程 无论如何使用联合登录获得相同的工作流程(没有网络登录)(即使支持仅限于Google帐户)? [编辑] 其他信息 目前的设置包括: App Engine的UserService配置为联合登录(openId..gmail,aol,myspace?,…) Facebook(OAuth) 推特(OAuth) 所有身份validationtypes都包含在UserService ,因此我可以调用UserService.getCurrentUser() (类似于Appengine的UserService,但支持twitter和facebook)。 帐户可以将多个身份validation方法链接在一起 到目前为止,客户端都是基于Web的,并且工作正常。 :d 我想: 添加公共Api(适用于网络和原生移动应用), 在内部使用Api用于本机移动应用程序。 有什么选择? 我一直在考虑限制Android应用的Google帐户身份validation,以避免基于网络的登录屏幕。 即便如此,支持Facebook和Twitter的网络Api会很不错。

Android:使用intent-filter处理OAuth回调

我正在构建一个需要OAuth的Android应用程序。 除了处理来自Yahoo的回调之外,我的所有OAuthfunction都有效。 我在AndroidManifest.xml中有以下内容: www.test.com将被我拥有的域名替换。 它似乎 : 单击页面上的链接时会触发此filter。 它不是由雅虎重定向触发的,浏览器在www.test.com上打开网站 当我直接在浏览器中输入域名时,不会触发它。 所以任何人都可以帮助我 什么时候会触发这个意图filter? 对intent-filter或权限的任何更改都会扩展filter以应用于重定向请求? 我可以使用的任何其他方法? 谢谢你的帮助。

Android:Google身份validation

我想问一下,通过手机配置的Google帐户validation用户身份的最佳方法是什么。 我首先查看了ClientLogin,但这不是我想要的,因为它要求用户在我的应用程序中输入登录名/密码。 我可以用OAuth来做,但在那里我应该要求用户在浏览器中输入他的凭据,这也是不可取的。 我想使用AccountManager(我发现它包含特定帐户的方法getPassword ,但它对我不起作用),如果可以以某种方式使用AccountManager + ClientLogin或AccountManager + OAuth请告诉我。 结果我希望能够使用用户的Google帐户登录而无需询问他的登录名/密码(当然在Android设备上进行确认)我不确定是否可行但是如果有某种方法可以实现这一点请指点我。 ..

为什么我不能为同一个包名创建多个OAuth 2.0客户端ID?

在这里的教程中,它表明完全可以为同一个包名使用两个OAuth 2.0客户端ID。 您应该创建两个客户端ID,一个具有发布证书指纹,另一个具有调试证书指纹。 确保为两者使用相同的包名称。 这允许Play游戏服务识别来自使用任一证书签名的链接APK的呼叫 所以我按照上面链接中的教程:首先进入Developer Console Game Service , Add a new Game 。 然后我在这个游戏中添加了一个Linked app ,它要求我创建一个OAuth 2.0客户端ID。 使用我的发布密钥的SHA1创建第一个客户端ID后,我找不到任何按钮来创建另一个客户端ID。 所以我转到Cloud Developer Console ,发现我可以在APIs & auth – > Credentials下创建第二个客户端ID。 我将debug.keystore的SHA1用于第二个客户端ID。 然后我用调试密钥和释放密钥编译和测试我的示例游戏。 但是,在运行应用程序并尝试登录后,结果是只接受使用发布密钥的应用程序(使用第一个客户端ID),而使用调试密钥的应用程序(使用第二个客户端ID)不是公认。 然后我尝试在Cloud Developer Console中删除我的发布密钥的客户端ID(以便调试密钥的客户端ID仍然是那里唯一的客户端ID)并再次测试我的应用程序。 这次,接受使用调试密钥的应用程序,并且当然不接受使用释放密钥的应用程序。 这是否意味着我无法为同一个包名创建多个OAuth 2.0客户端ID?

Socialauth-android获取oAuth-token并在设备上使用帐户信息

我使用socialauth–android库通过Facebook,Twitter和LinkedIn登录用户。 到目前为止,我找不到一种方法来获取oAuth-token。 有没有办法在不重新实现库的部分的情况下访问它? 此外,当我想使用socialauth登录时(请参阅下面的代码)我必须手动输入用户名和密码,尽管我已经设置了所有帐户。 你能告诉socialauth使用这个帐户吗? buttonFacebook.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mSocialAdapter.authorize(ActivityLogin.this, Provider.FACEBOOK); } });

Android中的OAuth实例状态

我正在尝试在Android应用中使用OAuth。 我有它正常工作,但有时在身份validation阶段遇到问题。 在Android中,我启动浏览器供用户登录和validation。 然后回调url将重定向回我的应用程序。 这是问题所在。 我的应用程序有一个OAuth使用者和提供者作为我的主类的成员。 当浏览器启动进行身份validation时,有时会丢弃我的主Activity以节省内存。 当回调url重新启动我的主Activity时,提供者和使用者是新实例,因此当我尝试向api发出请求时,它不起作用。 如果在身份validation阶段没有释放主要的Activiy,那么一切正常,因为我仍然在与原始的消费者和提供者合作。 我尝试使用onSaveInstanceState()和onRestoreInstanceState(),但没有成功。 当我的回调url被处理时,似乎没有调用onRestoreInstanceState()。 似乎直接进入onResume()。 在这种情况下,持久化消费者和提供者的正确方法是什么?

com.google.android.gms.auth.GoogleAuthException:未知

我正在尝试使用Oauth2来validation我的设备中登录的Google用户。 我创建了客户端ID,但我无法获得预期的结果。 代码是: String mScope=”oauth2:server:client_id:NNNNNNNNNNN.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login”; protected Void doInBackground(String… accountName) { Log.i(“Inside on AsynTask:”,”I am here”); String accName=accountName[0]; try { token1 = GoogleAuthUtil.getToken(Web_view_demo.this, accName, mScope); Log.i(“Inside on AsynTask:”,”I am here”); } catch (IOException transientEx) { // Network or server error, try later Log.e(“IO”, transientEx.toString()); } catch (UserRecoverableAuthException e) { // Recover (with e.getIntent()) Log.e(“UserRecover”, e.toString()); //Intent […]

OAuth的最佳学习资源

我必须为我的Android客户端使用OAuth,我发现学习资源很少或不适合这项技术。 有人知道一本好的书/教程/在线资源来学习OAuth吗? 谢谢。