1. 配置好Android开发环境并下载Android SDK。
- 了解配置Android开发环境的详细信息,请参考http://developer.android.com/index.html。
- 请您下载Android 组件:SDK下载
2. 解压所下载的包,从lib目录中得到所需要的所有的库:
Baidu-SocialShare-SDK-Android-L3-*.*.*.jar libammsdk.jar
3. 在Eclipse创建一个Android应用程序。
4. 修改AndroidManifest.xml,增加以下权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
5. 修改layout/main.xml,向其中添加button widget:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <Button android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="登陆" /> <Button android:id="@+id/userinfo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/login" android:layout_below="@+id/login" android:layout_marginTop="24dp" android:text="用户信息" /> </RelativeLayout>
6. 进入项目libs目录,将下载的包中的PcsAndroidDemo/libs中的所有jar包拷贝到此libs目录,然后并将他们加入Android程序的Build Path中。
7. 在assert目录下增加platforms.xml文件,声明需要支持的第三方平台。
<?xml version="1.0" encoding="utf-8"?> <SupportPlatforms> <platform id="1">sinaweibo</platform> <platform id="2">qqweibo</platform> <platform id="3">kaixin</platform> <platform id="4">qqdenglu</platform> <platform id="5">weixin_session</platform> <platform id="6">weixin_timeline</platform> </SupportPlatforms>
8. 修改工程中默认的MainActivity.java。
1) Import 库
import com.baidu.sharesdk.BaiduShareException; import com.baidu.sharesdk.BaiduSocialShare; import com.baidu.sharesdk.ShareListener; import com.baidu.sharesdk.Utility;
2) 设定开发者API Key。
private final static String ApiKey = "dHwDe5TTTtFEv4MOgoeTGLvX";//请替换申请客户端应用时获取的Api Key串
3) 添加按钮响应事件。
import com.baidu.sharesdk.BaiduShareException; import com.baidu.sharesdk.BaiduSocialShare; import com.baidu.sharesdk.ShareListener; import com.baidu.sharesdk.Utility; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private final static String APP_KEY = "dHwDe5TTTtFEv4MOgoeTGLvX"; private Button loginBtn; private Button getUserInfoBtn; private BaiduSocialShare socialShare; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); socialShare = BaiduSocialShare.getInstance(this, APP_KEY); loginBtn = (Button) findViewById(R.id.login); loginBtn.setOnClickListener(new AuthLisenter()); getUserInfoBtn = (Button) findViewById(R.id.userinfo); getUserInfoBtn.setOnClickListener(new UserinfoLisenter()); } class AuthLisenter implements OnClickListener { @Override public void onClick(View paramView) { socialShare.authorize(MainActivity.this, Utility.SHARE_TYPE_SINA_WEIBO, new ShareListener() { public void onApiComplete(String value) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "api success: " + value, Toast.LENGTH_SHORT) .show(); } public void onAuthComplete(Bundle bundle) { // TODO Auto-generated method stub String token = bundle.getString("access_token"); Toast.makeText(MainActivity.this, "login success with token: " + token, Toast.LENGTH_SHORT).show(); } public void onError(BaiduShareException value) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "auth fail with reason: " + value, Toast.LENGTH_SHORT).show(); } }); } } class UserinfoLisenter implements OnClickListener { @Override public void onClick(View paramView) { socialShare.getUserInfoWithShareType(MainActivity.this, Utility.SHARE_TYPE_SINA_WEIBO, new UserInfoListener()); } } class UserInfoListener implements ShareListener { final Handler handler = new Handler(Looper.getMainLooper()); @Override public void onAuthComplete(Bundle values) { // TODO Auto-generated method stubis } @Override public void onApiComplete(String responses) { // TODO Auto-generated method stub final String respo = decodeUnicode(responses); handler.post(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "user info: " + respo, Toast.LENGTH_SHORT).show(); } }); } @Override public void onError(BaiduShareException e) { Toast.makeText(MainActivity.this, "get user info fail reason: " + e.toString(), Toast.LENGTH_SHORT).show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } private static String decodeUnicode(String theString) { char aChar; int len = theString.length(); StringBuffer outBuffer = new StringBuffer(len); for (int x = 0; x < len;) { aChar = theString.charAt(x++); if (aChar == '\\') { aChar = theString.charAt(x++); if (aChar == 'u') { // Read the xxxx int value = 0; for (int i = 0; i < 4; i++) { aChar = theString.charAt(x++); switch (aChar) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': value = (value << 4) + aChar - '0'; break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': value = (value << 4) + 10 + aChar - 'a'; break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': value = (value << 4) + 10 + aChar - 'A'; break; default: throw new IllegalArgumentException( "Malformed \\uxxxx encoding."); } } outBuffer.append((char) value); } else { if (aChar == 't') aChar = '\t'; else if (aChar == 'r') aChar = '\r'; else if (aChar == 'n') aChar = '\n'; else if (aChar == 'f') aChar = '\f'; outBuffer.append(aChar); } } else outBuffer.append(aChar); } return outBuffer.toString(); } }
9.运行Android程序:
- 程序运行后,点击登陆按钮,弹出新浪登陆界面:
- 输入正确的用户名和密码,点击登陆按钮:
- 成功登陆之后会在toast里面显示获取的token信息
- 用户可以接着去点击用户信息按钮获取用户信息