How to integrate Google Reader in Android Application?

前端 未结 1 1493
南笙
南笙 2021-02-06 19:34

I want to integrate Google Reader in my android application. Please help me on how to do this?

相关标签:
1条回答
  • 2021-02-06 19:52

    Hope this helps:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        try{  
            String auth = getGoogleAuthKey("<your gmail email address>","<your password>");
            String token = getGoogleToken(auth); 
            String result = postToGoogleReader(token, auth); 
            TextView tv = (TextView) findViewById(R.id.textView1); 
            tv.setText(result); 
        }catch(Exception e){
        }
    
    }
    
    protected String getGoogleAuthKey(String _USERNAME, String _PASSWORD) {
        String responseString = ""; 
        URL url;
        try {
            //open the connection 
            url = new URL("https://www.google.com/accounts/ClientLogin");
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("POST");
            urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            urlConnection.setUseCaches(false);
            urlConnection.setDoOutput(true);  
    
            //create the body
            StringBuilder sb = new StringBuilder();
            sb.append("accountType="); 
            sb.append("GOOGLE"); 
            sb.append("&Email=");
            sb.append(_USERNAME);
            sb.append("&Passwd=");
            sb.append(_PASSWORD);
            sb.append("&service="); 
            sb.append("reader");
            sb.append("&source=");    
            sb.append("&lt;your app name&gt;"); 
    
            //make a request and retrieve results
            OutputStream outputStream = urlConnection.getOutputStream();  
            outputStream.write(sb.toString().getBytes("UTF-8"));
            outputStream.close(); 
            sb = null; 
    
            int responseCode = urlConnection.getResponseCode();
            InputStream inputStream;  
            if (responseCode == HttpURLConnection.HTTP_OK) {
                inputStream = urlConnection.getInputStream();
                responseString = convertStreamToString(inputStream);
                String _AUTHKEY = responseString.substring(responseString.indexOf("Auth="), responseString.length());
                responseString = _AUTHKEY.replace( "Auth=","" );
                inputStream.close();
                urlConnection.disconnect(); 
            }else {  
                urlConnection.disconnect(); 
                return "error"; 
            }
        } catch (Exception e) {
            return e.getMessage();  
        }
        Log.d("GoogleReader", "Auth.a=" + responseString); 
        return responseString.trim();
    }
    
    public String getGoogleToken(String authorization) {
        final String googleReaderTokenUrl = "https://www.google.com/reader/api/0/token"; 
        String responseString = ""; 
        URL url;
    
        try {
            //open the connection 
            url = new URL(googleReaderTokenUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            Log.d("GoogleReader", "Auth.b=" + authorization); 
            urlConnection.addRequestProperty("Authorization", "GoogleLogin auth=" + authorization); 
            urlConnection.setRequestMethod("GET");
            urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlendcoded");
            urlConnection.setUseCaches(false);
            urlConnection.setDoOutput(true);
    
            try {
                 InputStream inputStream = new BufferedInputStream(urlConnection.getInputStream());
                 responseString = convertStreamToString(inputStream);
            }catch(Exception e){
                int responseCode = urlConnection.getResponseCode();
                   return Integer.toString(responseCode); 
                //return e.getMessage(); 
            }finally {
                 urlConnection.disconnect();
            }
        } catch (Exception e) {
            return e.getMessage(); 
        }
        return responseString; 
    }
    
    public String postToGoogleReader(String token, String authorization){
        final String googleAuthUrl = "http://www.google.com/reader/api/0/item/edit"; 
        String responseString = "";  
        URL url;
        try { 
    
            //create the body
            StringBuilder sb = new StringBuilder();
            sb.append("accountType=");
            sb.append("GOOGLE");
            sb.append("&snippet=");
            sb.append(URLEncoder.encode("TheSnippet", "UTF-8"));
            sb.append("&T=");
            sb.append(URLEncoder.encode(token, "UTF-8"));
            sb.append("&share=");
            sb.append(false);
            sb.append("&url=");
            sb.append(URLEncoder.encode("http://developer.android.com/index.html", "UTF-8"));
            sb.append("&title=");
            sb.append(URLEncoder.encode("TheTitle", "UTF-8"));
            sb.append("&srcTitle=");    
            sb.append(URLEncoder.encode("TheSource", "UTF-8"));
            sb.append("&srcUrl=");    
            sb.append(URLEncoder.encode("www.your_web_site", "UTF-8"));
    
    
            //open the connection 
            url = new URL(googleAuthUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("POST");
            Log.d("GoogleReader", "Auth.c=" + authorization); 
            urlConnection.addRequestProperty("Authorization", "GoogleLogin auth=" + authorization); 
            urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            urlConnection.setRequestProperty("Content-Length", Integer.toString(sb.toString().getBytes("UTF-8").length));
            urlConnection.setUseCaches(false);
            urlConnection.setDoOutput(true);
    
    
            //make a request and retrieve results
            OutputStream outputStream = urlConnection.getOutputStream();
            outputStream.write(sb.toString().getBytes("UTF-8"));
            outputStream.close();
            sb = null;   
    
            int responseCode = urlConnection.getResponseCode();
            InputStream inputStream;
            if (responseCode == HttpURLConnection.HTTP_OK) {
                inputStream = urlConnection.getInputStream();
                responseString = convertStreamToString(inputStream);
                inputStream.close();
                urlConnection.disconnect(); 
            }else {  
                inputStream = urlConnection.getInputStream();
                responseString = convertStreamToString(inputStream);
                urlConnection.disconnect(); 
                return "error"; 
            }
        } catch (Exception e) {
            return e.getMessage(); 
        }
        return responseString; 
    
    }
    
    private String convertStreamToString(InputStream is) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }
    
    0 讨论(0)
提交回复
热议问题