国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android調用第三方QQ登錄代碼分享

2019-12-12 06:18:08
字體:
來源:轉載
供稿:網友

本文為大家分享了調用QQ登錄的相關代碼,希望對大家有幫助,減少項目開發的時間,具體內容如下

1、去QQ開放平臺注冊帳號(http://open.qq.com/),為應用申請QQ的APP_ID , 并下載相關的jar包,放到工程的lib目錄下。

2、在Manifest.xml里注冊QQ相關的Activity,代碼如下

 <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />   <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" >  <intent-filter>   <action android:name="android.intent.action.VIEW" />   <category android:name="android.intent.category.DEFAULT" />   <category android:name="android.intent.category.BROWSABLE" />   <data android:scheme="tencent100491239" />  </intent-filter> </activity> 

3、利用QQ提供的相關API去獲取相關的OPENID,昵稱,圖像等資料。這里有一點要注意的是,由于QQ服務器返回OPENID和昵稱等其他資料是分兩步進行的,而首先返回的OPENID速度很快,返回昵稱等其他資料可能會比較慢,所以在返回OPENID的時候,就可以認為已經調用QQ登錄成功,再用異步的方式處理昵稱等其他資料信息。以下是代碼部 分,已經過項目測試,可直接用(替換相應的APP_ID就可以了)

import java.io.IOException; import java.net.MalformedURLException; import java.net.SocketTimeoutException;  import org.apache.http.conn.ConnectTimeoutException; import org.json.JSONException; import org.json.JSONObject;  import android.app.Activity;  import com.smart.util.BroadcastAction; import com.smart.util.BroadcastUtil; import com.smart.util.Constant; import com.smart.util.ILog; import com.smart.util.PrefUtil; import com.smart.util.Prefkey; import com.tencent.open.HttpStatusException; import com.tencent.open.NetworkUnavailableException; import com.tencent.tauth.Constants; import com.tencent.tauth.IRequestListener; import com.tencent.tauth.IUiListener; import com.tencent.tauth.Tencent; import com.tencent.tauth.UiError; import com.utils.lib.ss.common.ToastHelper;  /**  * QQ登陸。  * @author E  */ public class QqLogin {    private static QqLogin qqLogin = null;    public static QqLogin getInstance(){   if (null == qqLogin) {    qqLogin = new QqLogin();   }   return qqLogin;  }    public void login(Activity context , QqLoginListener loginListener){   //Constant.QQ_APP_ID 這里要替換成自己申請的APP_ID   Tencent tencent = Tencent.createInstance(Constant.QQ_APP_ID, context);   if (null == tencent) {    ToastHelper.makeText(context, "error cased !");    return;   }   tencent.login(context, "get_user_info", new BaseUiListener(tencent,loginListener));  }    class BaseUiListener implements IUiListener{    Tencent tencent = null;   QqLoginListener qqLoginListener = null;      public BaseUiListener(Tencent tencent ,QqLoginListener qqLoginListener) {    super();    this.tencent = tencent;    this.qqLoginListener = qqLoginListener;   }    @Override   public void onComplete(JSONObject values) {    try {     String openid = values.getString("openid");     qqLoginListener.onLoginSuccess(openid);     tencent.requestAsync(Constants.GRAPH_SIMPLE_USER_INFO, null, Constants.HTTP_GET,       new BaseApiListener(qqLoginListener) ,null);    } catch (Exception e) {     e.printStackTrace();    }   }   @Override   public void onError(UiError arg0) {    qqLoginListener.onLoginFail();   }      @Override   public void onCancel() {    qqLoginListener.onCancel();   }  }    class BaseApiListener implements IRequestListener{       QqLoginListener qqLoginListener = null;    public BaseApiListener(QqLoginListener qqLoginListener) {    super();    this.qqLoginListener = qqLoginListener;   }   @Override   public void onComplete(JSONObject jsonObject, Object object) {    try {     ILog.e(jsonObject.toString());     String nickName = jsonObject.getString("nickname");     String figureurl_qq_1 = jsonObject.getString("figureurl_qq_2");     PrefUtil.instance().setPref(Prefkey.THIRD_NICKNAME, nickName);     PrefUtil.instance().setPref(Prefkey.THIRD_IMAGE, figureurl_qq_1);     //發送廣播到主頁去更新     BroadcastUtil.sendBroadcast(BroadcastAction.UPLOAD_THIRD_INFO);    } catch (Exception e) {     e.printStackTrace();    }   }   @Override   public void onConnectTimeoutException(ConnectTimeoutException arg0,     Object arg1) {   }   @Override   public void onHttpStatusException(HttpStatusException arg0, Object arg1) {       }   @Override   public void onIOException(IOException arg0, Object arg1) {       }   @Override   public void onJSONException(JSONException arg0, Object arg1) {       }   @Override   public void onMalformedURLException(MalformedURLException arg0,     Object arg1) {   }   @Override   public void onNetworkUnavailableException(     NetworkUnavailableException arg0, Object arg1) {   }   @Override   public void onSocketTimeoutException(SocketTimeoutException arg0,     Object arg1) {   }   @Override   public void onUnknowException(Exception arg0, Object arg1) {   }  }    /**   * 授權完成后,執行一下步的回調   */  public static abstract class QqLoginListener{   public void onLoginSuccess(String openid){};   public void onLoginSuccess(String openid, String nickname){};   public void onLoginFail(){};   public void onCancel(){};  } 

好了,到里代碼部分已經寫完,只需要調用login(Activity context , QqLoginListener loginListener)方法就可以了。

以上就是Android調用第三方登錄的詳細步驟和思路,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴里| 拜泉县| 青神县| 吴旗县| 平陆县| 外汇| 石首市| 成武县| 青浦区| 东台市| 瑞金市| 资源县| 长寿区| 尼玛县| 清新县| 东至县| 定襄县| 江孜县| 华宁县| 蓝田县| 镇宁| 林周县| 临颍县| 二连浩特市| 新密市| 乌鲁木齐市| 鹤山市| 和硕县| 安吉县| 大埔县| 河北区| 泽库县| 赫章县| 志丹县| 韶山市| 敦化市| 宁陵县| 峡江县| 永新县| 彰武县| 延长县|