title: How to Integrate Yahoo in Android
body: <p>I'm very new to android development &amp; I'm developing a yahoo login integration in Android App and return into main Activity. I have completed all the steps of yahoo integration.I have spent several days for searching yahoo integration in android but i cant find proper way.When i run this Application the Toast will appear consist of message:-</p>
  
  <p><strong>(E/Communication with the service provider failed: null(4194): oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: null)</strong></p>
  
  <p>then dialog box will appear with OAuth pin....Kindly any one help me about from where I get the OAuth pin and how can I retrieve yahoo mails by this Integration.</p>
  
  <pre><code>package com.example.yhoointegration;
  
  
  
  public class MainActivity extends ActionBarActivity {
  
      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 = ""; // this should be the same as
                                                  // the
      // SCHEME and HOST values in
      // your AndroidManifes""t.xml file
      String CONSUMER_KEY = "";
      String CONSUMER_SECRET = "";
      private CommonsHttpOAuthConsumer myConsumer;
      private CommonsHttpOAuthProvider myProvider;
      private String requestToken;
      private String accessToken;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          callOAuth();
          showDialog(PIN_DIALOG);
  
      }
  
      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();
              Log.e("Token///", "" + requestToken);
              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 &amp;&amp; accessToken.length() &gt; 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&amp;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 (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);
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.main, menu);
          return true;
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          // Handle action bar item clicks here. The action bar will
          // automatically handle clicks on the Home/Up button, so long
          // as you specify a parent activity in AndroidManifest.xml.
          int id = item.getItemId();
          if (id == R.id.action_settings) {
              return true;
          }
          return super.onOptionsItemSelected(item);
      }
  }
  </code></pre>