賬號申請什么的我就在這里略過了!(相信大家看看文檔都能夠處理的)本篇博客僅作引導用--主要提供給哪些不知道怎樣入手的朋友。(如果需要更加強大的功能大家可以看一下開放平台上的文檔,上面都有的)
使用QQ登錄需要在QQ互聯開放平台上注冊一個賬號並提交審核:http://connect.qq.com/intro/login
使用新浪微博登錄需要到新浪微博開放平台注冊賬號:http://open.weibo.com/development/mobile
新浪微博登錄的處理代碼:(需要下載新浪微博的SDK)
import java.io.ByteArrayOutputStream; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.text.TextUtils; import android.widget.Toast; import com.hd.client.BindActivity; import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.auth.WeiboAuthListener; import com.sina.weibo.sdk.auth.WeiboAuth.AuthInfo; import com.sina.weibo.sdk.exception.WeiboException; import com.sina.weibo.sdk.net.RequestListener; import com.sina.weibo.sdk.widget.LoginButton; /** * 新浪微博登錄工具類 * @author yw-tony * */ public class SinaLoginUtil { private static final String appkey = "你的appkey"; // http://www.sina.comhttp://www.fortrun.com private static final String redirectUrl = "http://www.fortrun.com"; private static final String SCOPE = "email,direct_messages_read,direct_messages_write," + "friendships_groups_read,friendships_groups_write,statuses_to_me_read," + "follow_app_official_microblog," + "invitation_write"; /** 登陸認證對應的listener */ private AuthListener mLoginListener = new AuthListener(); /** 登出操作對應的listener */ private LogOutRequestListener mLogoutListener = new LogOutRequestListener(); private Context context; private AuthInfo authInfo = null; public String token = ",";private SinaLoginUtil(){} private static SinaLoginUtil instance = new SinaLoginUtil(); public static SinaLoginUtil getInstance(){ return instance; } public void initSina(Context context,LoginButton loginButton){ this.context = context; // 創建授權認證信息 authInfo = new AuthInfo(context, "你的appkey",redirectUrl, SCOPE); loginButton.setWeiboAuthInfo(authInfo, mLoginListener); } /** * 登入按鈕的監聽器,接收授權結果。 */ private class AuthListener implements WeiboAuthListener { @Override public void onComplete(Bundle values) { final Oauth2AccessToken accessToken = Oauth2AccessToken.parseAccessToken(values); if (accessToken != null && accessToken.isSessionValid()) { /*String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format( new java.util.Date(accessToken.getExpiresTime()));*/ // String format = getString(R.string.weibosdk_demo_token_to_string_format_1); // mTokenView.setText(String.format(format, accessToken.getToken(), date)); AccessTokenKeeper.writeAccessToken(context, accessToken); } } /** * 登出按鈕的監聽器,接收登出處理結果。(API 請求結果的監聽器) */ private class LogOutRequestListener implements RequestListener { @Override public void onComplete(String response) { if (!TextUtils.isEmpty(response)) { try { JSONObject obj = new JSONObject(response); String value = obj.getString("result"); if ("true".equalsIgnoreCase(value)) { AccessTokenKeeper.clear(context); // mTokenView.setText(R.string.weibosdk_demo_logout_success); } } catch (JSONException e) { e.printStackTrace(); } } } @Override public void onComplete4binary(ByteArrayOutputStream responseOS) { // Do nothing } @Override public void onIOException(IOException e) { // mTokenView.setText(R.string.weibosdk_demo_logout_failed); } @Override public void onError(WeiboException e) { // mTokenView.setText(R.string.weibosdk_demo_logout_failed); } } }
QQ登錄:
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import android.widget.Toast; import com.google.gson.JsonObject; import com.hd.client.BindActivity; import com.tencent.tauth.IUiListener; import com.tencent.tauth.Tencent; import com.tencent.tauth.UiError; /** * 使用QQ登陸工具類 * @author yw-tony * */ public class QQLoginUtil { public String token = ","; public Tencent tencen = null; private static String APP_ID = "你的Appid"; private Context context; private QQLoginUtil(){} private static QQLoginUtil instance = new QQLoginUtil(); public static QQLoginUtil getInstance(){ return instance; } public void initTencen(Context context){ tencen = Tencent.createInstance(APP_ID, context); this.context = context; } public void qqLogin(Activity activity){ if (!tencen.isSessionValid()) { IUiListener listener = new BaseUiListener() { @Override protected void doComplete(JSONObject values) { /*updateUserInfo(); updateLoginButton();*/ } }; tencen.login(activity, "all", listener); } else { tencen.logout(activity); // updateUserInfo(); // updateLoginButton(); } } private class BaseUiListener implements IUiListener { @Override public void onComplete(JSONObject response) { // Util.showResultDialog(MainActivity.this, response.toString(), "登錄成功"); Log.e("響應字符串", response.toString()); doComplete(response); } protected void doComplete(final JSONObject values) { } @Override public void onError(UiError e) { Log.e("錯誤信息", e.errorDetail); // Util.toastMessage(MainActivity.this, "onError: " + e.errorDetail); // Util.dismissDialog(); } @Override public void onCancel() { Log.e("取消了當前的登錄操作", "取消了當前的登錄操作"); // Util.toastMessage(context, "onCancel: "); // Util.dismissDialog(); } } }