Android集成SDK实现QQ登录教程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21004057/article/details/78070214

大家好,今天给大家带来的是日常开发之QQ登录详细教程。我们先来看看效果图。



那么我们该如何去做呢?

第一步:点击前往QQ互联

进入后点击头像进入编辑个人信息,提交审核。大概1到2天能完成审核。需要提交身份证正面拍照图片。提交大小有限制可以用Photoshop软件修改下图片大小。



第二步:点击此处下载SDK

打开此SDK,里面还有一个工具,名叫获取签名.apk。把该软件安装到手机上。安装后显示效果如下。


我们可以看到每个应用下面有自己的安装包名和签名。

第三步:创建一个app项目。

然后打包安装到手机上或者模拟器上。然后再在获取签名.apk里查看该应用的安装包名和签名。


第四步:回到QQ互联,点击创建移动应用。把安装包名和签名填写到下面的信息。





第五步:导入SDK中的jar包。修改AndroidManifest.xml。

可以直接把SDK的如下2个jar包拖到lib下,然后再在build.gradle中添加进去。



dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile files('libs/mta-sdk-1.6.2.jar')
    compile files('libs/open_sdk_r5793_lite.jar')
}


添加2个网络访问权限和2个activity,分别是AuthActivity和AssistActivity。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.chenlei.tencentqqlogin">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <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="com.tencent.tauth.AuthActivity"
            android:noHistory="true"
            android:launchMode="singleTask" >
            <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="101431358" />
            </intent-filter>
        </activity>
        <activity android:name="com.tencent.connect.common.AssistActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"
            />
    </application>

</manifest>


第六步:放置一个QQ登录按钮。

放置该按钮后,点击按钮会跳转到QQ登录界面。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <Button
            android:id="@+id/btn_qq_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="QQ登录"
            android:layout_gravity="center">
        </Button>
    </LinearLayout>

</RelativeLayout>

效果图如下:


接下来,我们可以实例化该登录按钮。并为其增加点击事件。详细代码如下:

public class MainActivity extends Activity {
    private Button btn_qq_login;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        final Tencent tencent = Tencent.createInstance("101431358",getApplicationContext());
        btn_qq_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!tencent.isSessionValid()){
                    //login
                   tencent.login(MainActivity.this, "get_simple_userinfo", new IUiListener() {
                       @Override
                       public void onComplete(Object o) {
                           //在这里可以获取登录账户的个人信息
                       }

                       @Override
                       public void onError(UiError uiError) {

                       }

                       @Override
                       public void onCancel() {

                       }
                   });
                }
            }
        });
    }
    private void initView(){
        btn_qq_login = (Button) findViewById(R.id.btn_qq_login);
    }

}

我们可以看到,首先通过Tencent.createInstance()方法得到Tencent对象,第一个参数为你QQ互联创建应用后申请获取到的appid。然后通过Tencent对象调用login方法即可完成登录。login()方法传递的三个参数类型分别为Context,String,和IUIListener对象。第二个String为增量权限scope字符串。这里用get_simple_userinfo为获取用户QQ基本信息。另外还可以填写all等,all即代表所有权限。

接口的回调方法里包含的三个方法分别为登录成功,登录失败,取消登录。在三个回调方法中我们可以实现我们要做的事情。比如登录成功后在onComplete方法中获取个人的信息,则可以通过回调的object获取得到。
当然啦,在实际应用中要结合后台数据库设计来实现登录成功后的逻辑代码。本文到这来就结束啦!有什么问题可以发送至我的邮箱!谢谢各位的阅读。

猜你喜欢

转载自blog.csdn.net/qq_21004057/article/details/78070214