2013-05-14 173 views
0

我在我的android应用程序中使用oAuth登录到它。我想在成功登录后提取用户名或电子邮件地址?有什么办法可以做到吗?如果是 - 如何?如何从oauth获取用户名或电子邮件地址?

我发现这一点:Extracting Gmail username with OAuth access token但真的不知道如何使用它

+1

您如何首先获得OAuth令牌?如果您从某个第四方应用程序收到它,请忽略此评论。否则,您需要从用户凭证生成令牌*。 [Android文档中的教程](http://developer.android.com/training/id-auth/authenticate.html#RequestToken)应该可以帮助你做到这一点。这些示例涵盖了gmail,因此应该对您有用。如果您刚开始使用OAuth,[本指南](http://hueniverse.com/oauth/)真的可以帮助您解决问题。 – 2013-05-14 22:37:41

回答

0

好,我Digg的网络,直到它的结束,我想出了这一点:

private String usernameReader() { 
     String jsonOutput = ""; 
     try { 
      jsonOutput = makeSecuredReq(Constants.API_REQUEST, getConsumer(this.prefs)); 
      JSONObject jsonResponse = new JSONObject(jsonOutput); 
      JSONObject m = (JSONObject) jsonResponse.get("feed"); 
      JSONObject email = (JSONObject) m.get("id"); 
      jsonOutput=email.getString("$t"); 
     } catch (Exception e) { 
      Log.e("errroro", "Error executing request", e); 
      // console.setText("Error retrieving contacts : " + jsonOutput); 
     } 
     return jsonOutput; 
    } 

    private String makeSecuredReq(String url, OAuthConsumer consumer) throws Exception { 
     DefaultHttpClient httpclient = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(url); 
     Log.i("Requesting", "Requesting URL : " + url); 
     consumer.sign(request); 
     HttpResponse response = httpclient.execute(request); 
     Log.i("statusLine", "Statusline : " + response.getStatusLine()); 
     InputStream data = response.getEntity().getContent(); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(data)); 
     String responeLine; 
     StringBuilder responseBuilder = new StringBuilder(); 
     while ((responeLine = bufferedReader.readLine()) != null) { 
      responseBuilder.append(responeLine); 
     } 
     // Log.i(C.TAG,"Response : " + responseBuilder.toString()); 
     return responseBuilder.toString(); 
    } 

    private OAuthConsumer getConsumer(SharedPreferences prefs) { 
     String token = prefs.getString(OAuth.OAUTH_TOKEN, ""); 
     String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, ""); 
     OAuthConsumer consumer = new CommonsHttpOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 
     consumer.setTokenWithSecret(token, secret); 
     return consumer; 
    } 

它只是略作修改这个版本http://androidwarzone.blogspot.com/2011/07/android-oauth-full-example-with-source.html

不过,谢谢你的威廉卡特你的时间和精力。

相关问题