Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Java Development

Reply
Trusted Contributor
Posts: 201
Registered: ‎12-17-2010
My Device: Not Specified

Re: integrating twitter with BB app

hi i use same method as you mentioned.

but i got the error like this : "Failed to validate oauth signature and token";

so what i will do now ?

please reply

Trusted Contributor
Posts: 201
Registered: ‎12-17-2010
My Device: Not Specified

Re: integrating twitter with BB app

hi,

Can you please share your const & URLUTF8Encoder classes?

please share...

Thanks

Visitor
Posts: 1
Registered: ‎12-24-2010
My Device: Not Specified
My Carrier: se

URLUTF8Encoder


public class URLUTF8Encoder {

    /** Description of the Field */
    final static String[] hex = {
            "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07",
            "%08", "%09", "%0A", "%0B", "%0C", "%0D", "%0E", "%0F",
            "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17",
            "%18", "%19", "%1A", "%1B", "%1C", "%1D", "%1E", "%1F",
            "%20", "%21", "%22", "%23", "%24", "%25", "%26", "%27",
            "%28", "%29", "%2A", "%2B", "%2C", "%2D", "%2E", "%2F",
            "%30", "%31", "%32", "%33", "%34", "%35", "%36", "%37",
            "%38", "%39", "%3A", "%3B", "%3C", "%3D", "%3E", "%3F",
            "%40", "%41", "%42", "%43", "%44", "%45", "%46", "%47",
            "%48", "%49", "%4A", "%4B", "%4C", "%4D", "%4E", "%4F",
            "%50", "%51", "%52", "%53", "%54", "%55", "%56", "%57",
            "%58", "%59", "%5A", "%5B", "%5C", "%5D", "%5E", "%5F",
            "%60", "%61", "%62", "%63", "%64", "%65", "%66", "%67",
            "%68", "%69", "%6A", "%6B", "%6C", "%6D", "%6E", "%6F",
            "%70", "%71", "%72", "%73", "%74", "%75", "%76", "%77",
            "%78", "%79", "%7A", "%7B", "%7C", "%7D", "%7E", "%7F",
            "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87",
            "%88", "%89", "%8A", "%8B", "%8C", "%8D", "%8E", "%8F",
            "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97",
            "%98", "%99", "%9A", "%9B", "%9C", "%9D", "%9E", "%9F",
            "%A0", "%A1", "%A2", "%A3", "%A4", "%A5", "%A6", "%A7",
            "%A8", "%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF",
            "%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7",
            "%B8", "%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF",
            "%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7",
            "%C8", "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF",
            "%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D7",
            "%D8", "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF",
            "%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7",
            "%E8", "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF",
            "%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7",
            "%F8", "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF"
            };

    /**
     * Encode a string to the "x-www-form-urlencoded" form, enhanced with the
     * UTF-8-in-URL proposal. This is what happens: <p/>
     *
     *
     * <ul>
     *   <li> <p>
     *
     *   The ASCII characters 'a' through 'z', 'A' through 'Z', and '0' through
     *   '9' remain the same. <p/>
     *
     *
     *   <li> <p>
     *
     *   The unreserved characters - _ . ! ~ * ' ( ) remain the same. <p/>
     *
     *
     *   <li> <p>
     *
     *   The space character ' ' is converted into a plus sign '+'. <p/>
     *
     *
     *   <li> <p>
     *
     *   All other ASCII characters are converted into the 3-character string
     *   "%xy", where xy is the two-digit hexadecimal representation of the
     *   character code <p/>
     *
     *
     *   <li> <p>
     *
     *   All non-ASCII characters are encoded in two steps: first to a sequence
     *   of 2 or 3 bytes, using the UTF-8 algorithm; secondly each of these
     *   bytes is encoded as "%xx".
     * </ul>
     *
     *
     * @param s  The string to be encoded
     * @return   The encoded string
     */
    public static String encode( String s ) {
        StringBuffer sbuf = new StringBuffer();
        int len = s.length();
        for ( int i = 0; i < len; i++ ) {
            int ch = s.charAt( i );
            append( sbuf, ch );
        }
        return sbuf.toString();
    }

    /**
     * Description of the Method
     *
     * @param chars  PARAM
     * @return       Returns
     */
    public static String encode( char[] chars ) {
        StringBuffer sbuf = new StringBuffer();
        int len = chars.length;
        for ( int i = 0; i < len; i++ ) {
            int ch = chars[i];
            append( sbuf, ch );
        }
        return sbuf.toString();
    }

    /**
     * Description of the Method
     *
     * @param sbuf  PARAM
     * @param ch    PARAM
     */
    private static void append( StringBuffer sbuf, int ch ) {
        if ( 'A' <= ch && ch <= 'Z' ) {// 'A'..'Z'
            sbuf.append( (char)ch );
        } else if ( 'a' <= ch && ch <= 'z' ) {// 'a'..'z'
            sbuf.append( (char)ch );
        } else if ( '0' <= ch && ch <= '9' ) {// '0'..'9'
            sbuf.append( (char)ch );
        } else if ( ch == ' ' ) {// space
            //sbuf.append( '+' );
            sbuf.append("%20");
        } else if (ch == '!') {
            sbuf.append("%21");
        } else if (ch == '*') {
            sbuf.append("%2A");
        } else if (ch == '(') {
            sbuf.append("%28");
        } else if (ch == ')') {
            sbuf.append("%29");
        } else if (ch == '\'') {
            sbuf.append("%27");   
        } else if ( ch == '-' || ch == '_' // unreserved
                || ch == '.' || ch == '!'
                || ch == '~' || ch == '*'
                || ch == '\'' || ch == '('
                || ch == ')' ) {
            sbuf.append( (char)ch );
        } else if ( ch <= 0x007f ) {// other ASCII
            sbuf.append( hex[ch] );
        } else if ( ch <= 0x07FF ) {// non-ASCII <= 0x7FF
            sbuf.append( hex[0xc0 | ( ch >> 6 )] );
            sbuf.append( hex[0x80 | ( ch & 0x3F )] );
        } else {// 0x7FF < ch <= 0xFFFF
            sbuf.append( hex[0xe0 | ( ch >> 12 )] );
            sbuf.append( hex[0x80 | ( ( ch >> 6 ) & 0x3F )] );
            sbuf.append( hex[0x80 | ( ch & 0x3F )] );
        }
    }

}

Contributor
Posts: 13
Registered: ‎08-11-2010
My Device: Not Specified

Re: OAuth / OAuth workaround?

HI everyone,

 

After reading through this thread, it certainly seems feasible (yet painful) to implement OAuth by hand for BB development.  But, I am wondering if any of you could give me advice on which route to take for integrating twitter functionality into my app (to let the user auto-tweet news articles, etc.):

 

Am I better off:

 

a) Implementing OAuth (and subsequently tweet posts) manually, as done in this thread, or

 

b) Request xAuth usage from Twitter for my app, and then just use Twitter API ME 1.5, which seems very clean and easy but is limited to xAuth capability.

 

Anyone who has input about which is the way to go, I would really appreciate it!

Developer
Posts: 16,750
Registered: ‎07-29-2008
My Device: Z10 LE, Z30, Passport
My Carrier: O2 Germany

Re: OAuth / OAuth workaround?

use x-auth, it is much simpler and easier to use.
----------------------------------------------------------
feel free to press the like button on the right side to thank the user that helped you.
please mark posts as solved if you found a solution.
@SimonHain on twitter
Developer
Posts: 144
Registered: ‎03-15-2011
My Device: blackberry smart phone
My Carrier: Airtel

Re: OAuth / OAuth workaround?

I have used the above code but I get the pin Now how i can use this pin in my application . I havenot got the Access token and token secret please any body can help me to get the access token and token secret .....

Developer
Posts: 689
Registered: ‎08-09-2010
My Device: Not Specified

Re: OAuth / OAuth workaround?

Hi,

 

       Pls provide me URLUTF8Encoder class because right now i change this class to Uppercase then this problem so.

I change in UpperCase and right now 401 error throws so pls given me any idea or any documents.Some urgent.

 

 

Here i attach my  URLUTF8Encoder class .

package mypackage;

import net.rim.device.api.ui.component.Dialog;

/**
 * Provides a method to encode any string into a URL-safe
 * form.
 * Non-ASCII characters are first encoded as sequences of
 * two or three bytes, using the UTF-8 algorithm, before being
 * encoded as %HH escapes.
 *
 * Created: 17 April 1997
 * Author: Bert Bos <bert@w3.org>
 *
 * URLUTF8Encoder: http://www.w3.org/International/URLUTF8Encoder.java
 *
 * Copyright © 1997 World Wide Web Consortium, (Massachusetts
 * Institute of Technology, European Research Consortium for
 * Informatics and Mathematics, Keio University). All Rights Reserved. 
 * This work is distributed under the W3C® Software License [1] in the
 * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE.
 *
 * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
 */

public class URLUTF8Encoder
{

  final static String[] hex = {
    "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07",
    "%08", "%09", "%0a", "%0b", "%0c", "%0d", "%0e", "%0f",
    "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17",
    "%18", "%19", "%1a", "%1b", "%1c", "%1d", "%1e", "%1f",
    "%20", "%21", "%22", "%23", "%24", "%25", "%26", "%27",
    "%28", "%29", "%2a", "%2b", "%2c", "%2d", "%2e", "%2f",
    "%30", "%31", "%32", "%33", "%34", "%35", "%36", "%37",
    "%38", "%39", "%3a", "%3b", "%3c", "%3d", "%3e", "%3f",
    "%40", "%41", "%42", "%43", "%44", "%45", "%46", "%47",
    "%48", "%49", "%4a", "%4b", "%4c", "%4d", "%4e", "%4f",
    "%50", "%51", "%52", "%53", "%54", "%55", "%56", "%57",
    "%58", "%59", "%5a", "%5b", "%5c", "%5d", "%5e", "%5f",
    "%60", "%61", "%62", "%63", "%64", "%65", "%66", "%67",
    "%68", "%69", "%6a", "%6b", "%6c", "%6d", "%6e", "%6f",
    "%70", "%71", "%72", "%73", "%74", "%75", "%76", "%77",
    "%78", "%79", "%7a", "%7b", "%7c", "%7d", "%7e", "%7f",
    "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87",
    "%88", "%89", "%8a", "%8b", "%8c", "%8d", "%8e", "%8f",
    "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97",
    "%98", "%99", "%9a", "%9b", "%9c", "%9d", "%9e", "%9f",
    "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%a7",
    "%a8", "%a9", "%aa", "%ab", "%ac", "%ad", "%ae", "%af",
    "%b0", "%b1", "%b2", "%b3", "%b4", "%b5", "%b6", "%b7",
    "%b8", "%b9", "%ba", "%bb", "%bc", "%bd", "%be", "%bf",
    "%c0", "%c1", "%c2", "%c3", "%c4", "%c5", "%c6", "%c7",
    "%c8", "%c9", "%ca", "%cb", "%cc", "%cd", "%ce", "%cf",
    "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
    "%d8", "%d9", "%da", "%db", "%dc", "%dd", "%de", "%df",
    "%e0", "%e1", "%e2", "%e3", "%e4", "%e5", "%e6", "%e7",
    "%e8", "%e9", "%ea", "%eb", "%ec", "%ed", "%ee", "%ef",
    "%f0", "%f1", "%f2", "%f3", "%f4", "%f5", "%f6", "%f7",
    "%f8", "%f9", "%fa", "%fb", "%fc", "%fd", "%fe", "%ff"
  };

  /**
   * Encode a string to the "x-www-form-urlencoded" form, enhanced
   * with the UTF-8-in-URL proposal. This is what happens:
   *
   * <ul>
   * <li><p>The ASCII characters 'a' through 'z', 'A' through 'Z',
   *        and '0' through '9' remain the same.
   *
   * <li><p>The unreserved characters - _ . ! ~ * ' ( ) remain the same.
   *
   * <li><p>The space character ' ' is converted into a plus sign '+'.
   *
   * <li><p>All other ASCII characters are converted into the
   *        3-character string "%xy", where xy is
   *        the two-digit hexadecimal representation of the character
   *        code
   *
   * <li><p>All non-ASCII characters are encoded in two steps: first
   *        to a sequence of 2 or 3 bytes, using the UTF-8 algorithm;
   *        secondly each of these bytes is encoded as "%xx".
   * </ul>
   *
   * @param s The string to be encoded
   * @return The encoded string
   */
  public static String encode(String s)
  {
    StringBuffer sbuf = new StringBuffer();
    int len = s.length();
    for (int i = 0; i < len; i++) {
      int ch = s.charAt(i);
      if ('A' <= ch && ch <= 'Z') {		// 'A'..'Z'
        sbuf.append((char)ch);
      } else if ('a' <= ch && ch <= 'z') {	// 'a'..'z'
	       sbuf.append((char)ch);
      } else if ('0' <= ch && ch <= '9') {	// '0'..'9'
	       sbuf.append((char)ch);
      } else if (ch == ' ') {			// space
	       sbuf.append('+');
      } else if (ch == '-' || ch == '_'		// unreserved
          || ch == '.' || ch == '!'
          || ch == '~' || ch == '*'
          || ch == '\'' || ch == '('
          || ch == ')') {
        sbuf.append((char)ch);
      } else if (ch <= 0x007f) {		// other ASCII
	       sbuf.append(hex[ch]);
      } else if (ch <= 0x07FF) {		// non-ASCII <= 0x7FF
	       sbuf.append(hex[0xc0 | (ch >> 6)]);
	       sbuf.append(hex[0x80 | (ch & 0x3F)]);
      } else {					// 0x7FF < ch <= 0xFFFF
	       sbuf.append(hex[0xe0 | (ch >> 12)]);
	       sbuf.append(hex[0x80 | ((ch >> 6) & 0x3F)]);
	       sbuf.append(hex[0x80 | (ch & 0x3F)]);
      }
    }
   System.out.println("URLENCODE"+sbuf.toString().toUpperCase());
    return sbuf.toString().toUpperCase();
  }

}

 Thanks,

Developer
Posts: 689
Registered: ‎08-09-2010
My Device: Not Specified

Re: OAuth / OAuth workaround?

Hi,behrk2

 

       Pls provide me URLUTF8Encoder class because right now i change in URLUTF8Encoder class in Uppercase but same problem so .

 

Thanks,

Developer
Posts: 144
Registered: ‎03-15-2011
My Device: blackberry smart phone
My Carrier: Airtel

Re: OAuth / OAuth workaround?

here is the URLUTF8Encoder you are asking for

 

I have used this class in my project

 

public class URLUTF8Encoder {
	 /** Description of the Field */
    final static String[] hex = {
            "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07",
            "%08", "%09", "%0A", "%0B", "%0C", "%0D", "%0E", "%0F",
            "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17",
            "%18", "%19", "%1A", "%1B", "%1C", "%1D", "%1E", "%1F",
            "%20", "%21", "%22", "%23", "%24", "%25", "%26", "%27",
            "%28", "%29", "%2A", "%2B", "%2C", "%2D", "%2E", "%2F",
            "%30", "%31", "%32", "%33", "%34", "%35", "%36", "%37",
            "%38", "%39", "%3A", "%3B", "%3C", "%3D", "%3E", "%3F",
            "%40", "%41", "%42", "%43", "%44", "%45", "%46", "%47",
            "%48", "%49", "%4A", "%4B", "%4C", "%4D", "%4E", "%4F",
            "%50", "%51", "%52", "%53", "%54", "%55", "%56", "%57",
            "%58", "%59", "%5A", "%5B", "%5C", "%5D", "%5E", "%5F",
            "%60", "%61", "%62", "%63", "%64", "%65", "%66", "%67",
            "%68", "%69", "%6A", "%6B", "%6C", "%6D", "%6E", "%6F",
            "%70", "%71", "%72", "%73", "%74", "%75", "%76", "%77",
            "%78", "%79", "%7A", "%7B", "%7C", "%7D", "%7E", "%7F",
            "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87",
            "%88", "%89", "%8A", "%8B", "%8C", "%8D", "%8E", "%8F",
            "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97",
            "%98", "%99", "%9A", "%9B", "%9C", "%9D", "%9E", "%9F",
            "%A0", "%A1", "%A2", "%A3", "%A4", "%A5", "%A6", "%A7",
            "%A8", "%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF",
            "%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7",
            "%B8", "%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF",
            "%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7",
            "%C8", "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF",
            "%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D7",
            "%D8", "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF",
            "%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7",
            "%E8", "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF",
            "%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7",
            "%F8", "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF"
            };

    /**
     * Encode a string to the "x-www-form-urlencoded" form, enhanced with the
     * UTF-8-in-URL proposal. This is what happens: <p/>
     *
     *
     * <ul>
     *   <li> <p>
     *
     *   The ASCII characters 'a' through 'z', 'A' through 'Z', and '0' through
     *   '9' remain the same. <p/>
     *
     *
     *   <li> <p>
     *
     *   The unreserved characters - _ . ! ~ * ' ( ) remain the same. <p/>
     *
     *
     *   <li> <p>
     *
     *   The space character ' ' is converted into a plus sign '+'. <p/>
     *
     *
     *   <li> <p>
     *
     *   All other ASCII characters are converted into the 3-character string
     *   "%xy", where xy is the two-digit hexadecimal representation of the
     *   character code <p/>
     *
     *
     *   <li> <p>
     *
     *   All non-ASCII characters are encoded in two steps: first to a sequence
     *   of 2 or 3 bytes, using the UTF-8 algorithm; secondly each of these
     *   bytes is encoded as "%xx".
     * </ul>
     *
     *
     * @param s  The string to be encoded
     * @return   The encoded string
     */
    public static String encode( String s ) {
        StringBuffer sbuf = new StringBuffer();
        int len = s.length();
        for ( int i = 0; i < len; i++ ) {
            int ch = s.charAt( i );
            append( sbuf, ch );
        }
        return sbuf.toString();
    }

    /**
     * Description of the Method
     *
     * @param chars  PARAM
     * @return       Returns
     */
  
    public static String encode( char[] chars ) {
        StringBuffer sbuf = new StringBuffer();
        int len = chars.length;
        for ( int i = 0; i < len; i++ ) {
            int ch = chars[i];
            append( sbuf, ch );
        }
        return sbuf.toString();
    }
    

    /**
     * Description of the Method
     *
     * @param sbuf  PARAM
     * @param ch    PARAM
     */
    private static void append( StringBuffer sbuf, int ch ) {
        if ( 'A' <= ch && ch <= 'Z' ) {// 'A'..'Z'
            sbuf.append( (char)ch );
        } else if ( 'a' <= ch && ch <= 'z' ) {// 'a'..'z'
            sbuf.append( (char)ch );
        } else if ( '0' <= ch && ch <= '9' ) {// '0'..'9'
            sbuf.append( (char)ch );
        } else if ( ch == ' ' ) {// space
            //sbuf.append( '+' );
        	sbuf.append("%20");
        } else if (ch == '!') {
      	  sbuf.append("%21");
        } else if (ch == '*') {
      	  sbuf.append("%2A");
        } else if (ch == '(') {
      	  sbuf.append("%28");
        } else if (ch == ')') {
      	  sbuf.append("%29");
        } else if (ch == '\'') {
      	  sbuf.append("%27");   
        } else if ( ch == '-' || ch == '_' // unreserved
                || ch == '.' || ch == '!'
                || ch == '~' || ch == '*'
                || ch == '\'' || ch == '('
                || ch == ')' ) {
            sbuf.append( (char)ch );
        } else if ( ch <= 0x007f ) {// other ASCII
            sbuf.append( hex[ch] );
        } else if ( ch <= 0x07FF ) {// non-ASCII <= 0x7FF
            sbuf.append( hex[0xc0 | ( ch >> 6 )] );
            sbuf.append( hex[0x80 | ( ch & 0x3F )] );
        } else {// 0x7FF < ch <= 0xFFFF
            sbuf.append( hex[0xe0 | ( ch >> 12 )] );
            sbuf.append( hex[0x80 | ( ( ch >> 6 ) & 0x3F )] );
            sbuf.append( hex[0x80 | ( ch & 0x3F )] );
        }
    }


}

 

Developer
Posts: 689
Registered: ‎08-09-2010
My Device: Not Specified

Re: OAuth / OAuth workaround?

Hi uttamtts,

 

             Thank for provide this class URLUTF8Encoder .but here in this forums they told his u convert in toUppercase and i do it but same output get means 401 Resonse get so given me any solution and i post my code so check that.

 

Thanks,