欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年05月31日 11:42:27   投稿:lijiao  
現(xiàn)在的項目開發(fā),調用第三方登錄,幾乎是必須的,這篇文章主要介紹了Android調用第三方QQ登錄代碼分享

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

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的時候,就可以認為已經(jīng)調用QQ登錄成功,再用異步的方式處理昵稱等其他資料信息。以下是代碼部 分,已經(jīng)過項目測試,可直接用(替換相應的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); 
    //發(fā)送廣播到主頁去更新 
    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) { 
  } 
 } 
  
 /** 
  * 授權完成后,執(zhí)行一下步的回調 
  */ 
 public static abstract class QqLoginListener{ 
  public void onLoginSuccess(String openid){}; 
  public void onLoginSuccess(String openid, String nickname){}; 
  public void onLoginFail(){}; 
  public void onCancel(){}; 
 } 

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

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

相關文章

  • Android實現(xiàn)動態(tài)圓環(huán)的圖片頭像控件

    Android實現(xiàn)動態(tài)圓環(huán)的圖片頭像控件

    這篇文章主要為大家詳細介紹了Android實現(xiàn)帶有動態(tài)圓環(huán)的圓形圖片控件DynamicAvatarView的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android版的股票行情K線圖開發(fā)

    Android版的股票行情K線圖開發(fā)

    這篇文章主要介紹了Android版的股票行情K線圖開發(fā),感興趣的小伙伴們可以參考一下
    2016-01-01
  • Android集成百度地圖開發(fā)流程和注意事項

    Android集成百度地圖開發(fā)流程和注意事項

    現(xiàn)在很多項目都需要集成百度地圖,所以就把自己做過一個項目的經(jīng)驗寫出來和大家分享,方便自己和大家使用的時候參考借鑒,下面就來一起看看Android集成百度地圖開發(fā)流程和注意事項吧。
    2016-09-09
  • RecyclerView仿應用列表實現(xiàn)網(wǎng)格布局

    RecyclerView仿應用列表實現(xiàn)網(wǎng)格布局

    這篇文章主要為大家詳細介紹了RecyclerView仿應用列表實現(xiàn)網(wǎng)格布局,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Android修改jar文件包名的方法分享

    Android修改jar文件包名的方法分享

    為了防止沖突,修改包名是最直接的途徑。下面這篇文章主要介紹了關于Android中修改jar文件包名的方法,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Android UI效果之繪圖篇(一)

    Android UI效果之繪圖篇(一)

    這篇文章主要介紹了Android UI效果之繪圖篇,針對Android開發(fā)中的UI效果設計模塊進行講解,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android自定義控件實現(xiàn)方向盤效果

    Android自定義控件實現(xiàn)方向盤效果

    這篇文章主要為大家詳細介紹了Android自定義控件實現(xiàn)方向盤效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Android Studio Gradle 更換阿里云鏡像的方法

    Android Studio Gradle 更換阿里云鏡像的方法

    這篇文章主要介紹了Android Studio Gradle 更換阿里云鏡像的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • android Socket實現(xiàn)簡單聊天小程序

    android Socket實現(xiàn)簡單聊天小程序

    這篇文章主要為大家詳細介紹了android Socket實現(xiàn)簡單聊天小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Flutter?彈性布局基石flex算法flexible示例詳解

    Flutter?彈性布局基石flex算法flexible示例詳解

    這篇文章主要為大家介紹了Flutter?彈性布局基石flex算法flexible示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12

最新評論