简体   繁体   English

如何在我的 Android 应用程序中集成雅虎邮件服务?

[英]How to integrate yahoo mail service in my Android application?

hi all I want to integrate yahoo mail service in my android application.大家好,我想在我的 android 应用程序中集成雅虎邮件服务。 After search much on google I didn't get proper tutorial for that please anyone provide me any link or suggestion which helpfull for me在谷歌上搜索了很多之后我没有得到适当的教程请任何人给我提供任何对我有帮助的链接或建议

see above soure code its working fine and download Oauth Libary.看到上面的源代码它工作正常并下载Oauth Libary

import oauth.signpost.OAuth;
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
import oauth.signpost.commonshttp.CommonsHttpOAuthProvider;
import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import oauth.signpost.exception.OAuthNotAuthorizedException;
import oauth.signpost.signature.HmacSha1MessageSigner;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.synapse.selfervices.R;

public class YahooScreen extends Activity {
    private static final String REQUEST_TOKEN_ENDPOINT_URL ="https://api.login.yahoo.com/oauth/v2/get_request_token";
    private static final String ACCESS_TOKEN_ENDPOINT_URL ="https://api.login.yahoo.com/oauth/v2/get_access_token";
    private static final String AUTHORIZE_WEBSITE_URL ="https://api.login.yahoo.com/oauth/v2/request_auth";
    private static final int PIN_DIALOG = 0;
    String CALLBACK_URL = OAuth.OUT_OF_BAND; // this should be the same as the
    // SCHEME and HOST values in
    // your AndroidManifest.xml file
    String CONSUMER_KEY = "";//
    String CONSUMER_SECRET = "";
    private CommonsHttpOAuthConsumer myConsumer;
    private CommonsHttpOAuthProvider myProvider;
    private String requestToken;
    private String accessToken;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            callOAuth();
            showDialog(PIN_DIALOG);
            // createPinDialog().show();
    }

    private void callOAuth() {
            try {
                    // retrieve the consumer token and then sign it
                    myConsumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY,
                                    CONSUMER_SECRET);

                    myConsumer.setMessageSigner(new HmacSha1MessageSigner());

                    HttpClient client = new DefaultHttpClient();
                    // retrieve the provider by using the signed consumer token
                    myProvider = new CommonsHttpOAuthProvider(
                                    REQUEST_TOKEN_ENDPOINT_URL, ACCESS_TOKEN_ENDPOINT_URL,
                                    AUTHORIZE_WEBSITE_URL, client);
                    myProvider.setOAuth10a(true);
                    String aUrl = myProvider.retrieveRequestToken(myConsumer,
                                    CALLBACK_URL);

                    requestToken = myConsumer.getToken();
                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(aUrl)));
            } catch (Exception ex) {
                    Toast.makeText(getApplicationContext(), ex.getMessage(),
                                    Toast.LENGTH_LONG).show();
                    Log.e(ex.getMessage(), ex.toString());
            }
    }

    // this is the callback function that will run when oauth authenticates
    // successfully
    @Override
    protected void onNewIntent(Intent intent) {
            System.out.println("OnNewIntent...");
            Toast.makeText(getApplicationContext(), "OnNewIntent - It works!",
                            Toast.LENGTH_LONG).show();
            // whatever you want to do after authenticating goes here ....
    }

    AlertDialog createPinDialog() {
            LayoutInflater factory = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

            // LayoutInflater factory = LayoutInflater.from(this);
            final View textEntryView = factory.inflate(R.layout.pin, null);
            final EditText pinText = (EditText) textEntryView
                            .findViewById(R.id.pin_text);
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("Twitter OAuth PIN");
            builder.setView(textEntryView);
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                            if (pinText != null)
                                    gotOAuthPin(pinText.getText().toString());
                            onResume();
                    }
            });
            return builder.create();
    }

    private void gotOAuthPin(String pin) {
            SharedPreferences.Editor editor = getSharedPreferences("yahoo",
                            MODE_PRIVATE).edit();
            try {
                    myProvider.retrieveAccessToken(myConsumer, pin);
                    accessToken = myConsumer.getToken();

            } catch (OAuthMessageSignerException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            } catch (OAuthNotAuthorizedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            } catch (OAuthExpectationFailedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            } catch (OAuthCommunicationException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            }
            if (accessToken != null && accessToken.length() > 0) {
                    Toast.makeText(this, "Authorized", Toast.LENGTH_SHORT).show();
                    HttpPost request = new HttpPost(
                                    "http://social.yahooapis.com/v1/user/profile?format=json");
                    StringEntity body = null;
                    /*
                     * try { body = new StringEntity("city=hamburg&label=" +
                     * URLEncoder.encode("Send via Signpost!", "UTF-8")); } catch
                     * (UnsupportedEncodingException e1) { // TODO Auto-generated catch
                     * block e1.printStackTrace(); }
                     * body.setContentType("application/x-www-form-urlencoded");
                     * request.setEntity(body);
                     */

                    try {
                            myConsumer.sign(request);
                    } catch (OAuthMessageSignerException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
        } catch (OAuthMessageSignerException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                    } catch (OAuthExpectationFailedException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                    } catch (OAuthCommunicationException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                    }

                    System.out.println("Sending update request to Fire Eagle...");

                    HttpClient httpClient = new DefaultHttpClient();
                    HttpResponse response = null;
                    try {
                            response = httpClient.execute(request);
                    } catch (ClientProtocolException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    }

                    Toast.makeText(
                                    this,
                                    "Response: " + response.getStatusLine().getStatusCode()
                                                    + " " + response.getStatusLine().getReasonPhrase(),
                                    Toast.LENGTH_SHORT).show();
            } else {
                    Toast.makeText(this, "Not Authorized", Toast.LENGTH_SHORT).show();
            }
    }

    @Override
    protected Dialog onCreateDialog(int id) {
            switch (id) {
            case PIN_DIALOG:
                    LayoutInflater factory = LayoutInflater.from(this);
                    final View textEntryView = factory.inflate(R.layout.pin, null);
                    final EditText pinText = (EditText) textEntryView
                                    .findViewById(R.id.pin_text);
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setTitle("OAuth PIN");
                    builder.setView(textEntryView);
                    builder.setPositiveButton("OK",
                                    new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog,
                                                            int whichButton) {
                                                    if (pinText != null)
                                                            gotOAuthPin(pinText.getText().toString());
                                            }
                                    });
                    return builder.create();
            }

            return super.onCreateDialog(id);
    }}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM