Android-使用Android Studio实现第三方QQ登录
2017-10-12 09:16
507 查看
现在的第三方登录很普遍如QQ,微博,微信,今天我们就来实现如何接入QQ登录到我们的项目中
要想使用QQ登录我们需要到腾讯开放平台注册账号获取开发者资格地址:(http://open.qq.com) 注册完成后点击我们右上角的管理中心
![](https://img-blog.csdn.net/20171012085712776?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzkzNTc4OTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
进入管理中心后点击下面的创建应用
![](https://img-blog.csdn.net/20171012085926443?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzkzNTc4OTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后选择Android平台就会获取APPID和APPKEY创建完成后我们需要到
![](https://img-blog.csdn.net/20171012091558414?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzkzNTc4OTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后选择Android平台就会获取APPID和APPKEY创建完成后我们需要到 http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 下载SDKJar包 接下来就可以实现QQ登录了新建一个项目工程名为QQLoginDemo 然后把我们刚才下载的SDK解压将jar文件夹中的jar包拷贝到我们的项目libs中jar下载地址:http://download.csdn.net/download/qq_39357892/10017270
![](https://img-blog.csdn.net/20171012090308608?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzkzNTc4OTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
之后放到我们自己的工程里
![](https://img-blog.csdn.net/20171012090439043?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzkzNTc4OTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
要想使用QQ登录我们需要到腾讯开放平台注册账号获取开发者资格地址:(http://open.qq.com) 注册完成后点击我们右上角的管理中心
进入管理中心后点击下面的创建应用
然后选择Android平台就会获取APPID和APPKEY创建完成后我们需要到
然后选择Android平台就会获取APPID和APPKEY创建完成后我们需要到 http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 下载SDKJar包 接下来就可以实现QQ登录了新建一个项目工程名为QQLoginDemo 然后把我们刚才下载的SDK解压将jar文件夹中的jar包拷贝到我们的项目libs中jar下载地址:http://download.csdn.net/download/qq_39357892/10017270
之后放到我们自己的工程里
打开我们的Androidmanifest 在里面加入权限和注册Activity 如下 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="sizu.nanshigou"> <!-- QQ登录授权所需权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_nanren" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SousuoActivity"></activity> <!-- 注册SDKActivity --> <activity android:name="com.tencent.open.yyb.AppbarActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.tencent.connect.avatar.ImageActivity" /> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="behind" 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="tencent1106469558" /> <!--应用的AppId要相同--> </intent-filter> </activity> </application> </manifest> ** ** Activity中的内容 ------------ ** package sizu.nanshigou; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.RelativeLayout; import android.widget.Toast; import com.hjm.bottomtabbar.BottomTabBar; import com.tencent.connect.UserInfo; import com.tencent.connect.common.Constants; import com.tencent.tauth.IUiListener; import com.tencent.tauth.Tencent; import com.tencent.tauth.UiError; import org.json.JSONObject; import butterknife.BindView; import butterknife.ButterKnife; import fragment.FourFragment; import fragment.OneFragment; import fragment.ThreeFragment; import fragment.TwoFragment; public class MainActivity extends AppCompatActivity { @BindView(R.id.bottom_tab_bar) BottomTabBar mb; @BindView(R.id.activity_main) RelativeLayout activityMain; private ViewPager vp; private static final String APPID = "1106469558"; private EditText et1; private EditText et2; private Tencent mTencent; //qq主操作对象 private IUiListener loginListener; //授权登录监听器 private IUiListener userInfoListener; //获取用户信息监听器 private String scope; //获取信息的范围参数 private UserInfo userInfo; //qq用户信息 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setupViews(); initData(); } @Override protected void onDestroy() { if (mTencent != null) { //注销登录 mTencent.logout(MainActivity.this); } super.onDestroy(); } private void setupViews() { et1 = (EditText) findViewById(R.id.editText1); et2 = (EditText) findV c6ae iewById(R.id.editText2); findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("你点击了使用qq登录按钮"); login(); } }); findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub System.out.println("开始获取用户信息"); userInfo = new UserInfo(MainActivity.this, mTencent.getQQToken()); userInfo.getUserInfo(userInfoListener); } }); } private void initData() { //初始化qq主操作对象 mTencent = Tencent.createInstance(APPID, MainActivity.this); //要所有权限,不然会再次申请增量权限,这里不要设置成get_user_info,add_t scope = "all"; loginListener = new IUiListener() { @Override public void onError(UiError arg0) { // TODO Auto-generated method stub } /** * 返回json数据样例 * * {"ret":0,"pay_token":"D3D678728DC580FBCDE15722B72E7365", * "pf":"desktop_m_qq-10000144-android-2002-", * "query_authority_cost":448, * "authority_cost":-136792089, * "openid":"015A22DED93BD15E0E6B0DDB3E59DE2D", * "expires_in":7776000, * "pfkey":"6068ea1c4a716d4141bca0ddb3df1bb9", * "msg":"", * "access_token":"A2455F491478233529D0106D2CE6EB45", * "login_cost":499} */ @Override public void onComplete(Object value) { // TODO Auto-generated method stub System.out.println("有数据返回.."); if (value == null) { return; } try { JSONObject jo = (JSONObject) value; int ret = jo.getInt("ret"); System.out.println("json=" + String.valueOf(jo)); if (ret == 0) { Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_LONG).show(); String openID = jo.getString("openid"); String accessToken = jo.getString("access_token"); String expires = jo.getString("expires_in"); mTencent.setOpenId(openID); mTencent.setAccessToken(accessToken, expires); } } catch (Exception e) { // TODO: handle exception } } @Override public void onCancel() { // TODO Auto-generated method stub } }; userInfoListener = new IUiListener() { @Override public void onError(UiError arg0) { // TODO Auto-generated method stub } /** * 返回用户信息样例 * * {"is_yellow_year_vip":"0","ret":0, * "figureurl_qq_1":"http:\/\/q.qlogo.cn\/qqapp\/1104732758\/015A22DED93BD15E0E6B0DDB3E59DE2D\/40", * "figureurl_qq_2":"http:\/\/q.qlogo.cn\/qqapp\/1104732758\/015A22DED93BD15E0E6B0DDB3E59DE2D\/100", * "nickname":"攀爬←蜗牛","yellow_vip_level":"0","is_lost":0,"msg":"", * "city":"黄冈"," * figureurl_1":"http:\/\/qzapp.qlogo.cn\/qzapp\/1104732758\/015A22DED93BD15E0E6B0DDB3E59DE2D\/50", * "vip":"0","level":"0", * "figureurl_2":"http:\/\/qzapp.qlogo.cn\/qzapp\/1104732758\/015A22DED93BD15E0E6B0DDB3E59DE2D\/100", * "province":"湖北", * "is_yellow_vip":"0","gender":"男", * "figureurl":"http:\/\/qzapp.qlogo.cn\/qzapp\/1104732758\/015A22DED93BD15E0E6B0DDB3E59DE2D\/30"} */ @Override public void onComplete(Object arg0) { // TODO Auto-generated method stub if(arg0 == null){ return; } try { JSONObject jo = (JSONObject) arg0; int ret = jo.getInt("ret"); System.out.println("json=" + String.valueOf(jo)); String nickName = jo.getString("nickname"); String gender = jo.getString("gender"); Toast.makeText(MainActivity.this, "你好,"+gender + nickName, Toast.LENGTH_LONG).show(); } catch (Exception e) { // TODO: handle exception } } @Override public void onCancel() { // TODO Auto-generated method stub } }; } private void login() { //如果session无效,就开始登录 if (!mTencent.isSessionValid()) { //开始qq授权登录 mTencent.login(MainActivity.this, scope, loginListener); } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Constants.REQUEST_API) { if (resultCode == Constants.REQUEST_LOGIN) { Tencent.handleResultData(data, loginListener); } super.onActivityResult(requestCode, resultCode, data); } } } ** ** 需要配置的权限 ------- ** <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- SDK2.1新增获取用户位置信息 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.GET_TASKS"/>
相关文章推荐
- Android-使用Android Studio实现第三方QQ登录
- Android使用Android studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Android 使用Android studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- thinkPHP3.2.2使用thinkSDK实现第三方登录(以QQ登录)为例。
- 关于使用微信登录第三方APP的实现(Android版)
- 关于Android Studio第三方登录(使用QQ登录)代码
- Android 使用shareSDK进行第三方登录失败解决方法(微信,微博,qq)
- android 实现QQ第三方登录,分享功能
- Android应用使用QQ进行第三方登录的一些问题
- 最新Android实现分享到QQ QZone 博客功能(集成官方SDK,不使用第三方)
- Android使用shareSDK第三方登录(qq,微信,微博)
- Android实现QQ第三方登录
- 关于使用微信登录第三方APP的实现(Android版)
- Android应用之最新版本SDKV2.4实现QQ第三方登录