Giter VIP home page Giter VIP logo

sharesdk-for-android's Introduction

ShareSDK 集成文档

注:使用ShareSDK Gradle集成方式,不需要在AndroidMainfest.xml下面配置任何权限和Activity

注意:需要先申请Mob的appkey与appsecret,请点击这里查看申请步骤

文档语言 : 中文 | English

  • ShareSDK是全球最流行的应用和手机游戏社交SDK !到目前为止,我们已经支持了几十万名客户。 ShareSDK可以轻松支持世界上40多个社交平台的第三方登录、分享和与好友列表操作。短短几个小时,这个小程序包将使您的应用程序完全社会化! 想在**社交平台上发布你的应用吗?这可能是你最好的选择!

  • website -- http://www.mob.com

  • wiki -- http://wiki.mob.com/sdk-share-android-3-0-0/

  • bbs -- http://bbs.mob.com/forum.php

一、配置gradle

1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:2018.0319.1724’,如下所示;

buildscript {
repositories {
     jcenter() 
}

dependencies {
    ...
    classpath "com.mob.sdk:MobSDK:2018.0319.1724"

}
}

directory structure

2、在使用到Mob产品的module下面的build.gradle文件里面添加引用

apply plugin: 'com.mob.sdk'

3、然后添加MobSDK方法,配置mob的key和秘钥 (与第2步是一个gradle中;注意:MobSDK方法是配置到文件根目录,与android并列,不要配置到android里面哦)

如果还没有key的,申请Mob的appkey与appsecret请点击这里查看

Onekeyshare是ShareSDK的GUI界面,如果不需要,则需要添加”gui false”,因为默认是使用gui,version字段为SDK的版本号,不设置则使用最新的版本;

MobSDK {
appKey "d580ad56b4b5"
appSecret "7fcae59a62342e7e2759e9e397c82bdd"

ShareSDK {}

}

4、Gradle集成方式可以在Mob产品的module下面的build.gradle文件里面配置ShareSDK各个社交平台的key信息 MobSDK { appKey "d580ad56b4b5" appSecret "7fcae59a62342e7e2759e9e397c82bdd"

ShareSDK {
    //平台配置信息
    devInfo {
        SinaWeibo {
            appKey "568898243"
            appSecret "38a4f8204cc784f81f9f0daaf31e02e3"
            callbackUri "http://www.sharesdk.cn"
            shareByAppClient false
        }
        Wechat {
            appId "wx4868b35061f87885"
            appSecret "64020361b8ec4c99936c0e3999a9f249"
        }
        QQ {
            appId "100371282"
            appKey "aed9b0303e3ed1e27bae87c33761161d"
            shareByAppClient true
        }
        Facebook {
            appKey "1412473428822331"
            appSecret "a42f4f3f867dc947b9ed6020c2e93558"
            callbackUri "https://mob.com"
        }
    }
}
}

其中的devInfo为来自社交平台的应用信息。

注:如果您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但如果您设置了,请在您自己的Application类中调用: MobSDK.init(this); 并且在Manifest清单文件中配置:tools:replace=”android:name”,如下所示:

<application
	android:name = ".MyApplication"
	tools:replace="android:name">

二、配置字段说明

配置支持的平台全部属性字段有以下这些(注:区分大小写)

字段 说明
id 数字,平台的id,可以设置为任何不重复的数字,(可选字段)
sortId 数字,九宫格界面平台的排序,越小越靠前,可以设置为任何不重复的数字,(可选字段)
appId 文本,对应ShareSDK.xml中的AppId、ClientID、ApplicationId、ChannelID
appKey 文本,对应ShareSDK.xml中的AppKey、ConsumerKey、ApiKey、OAuthConsumerKey
appSecret 文本,对应ShareSDK.xml中的AppSecret、ConsumerSecret、SecretKey、Secret、ClientSecret、ApiSecret、ChannelSecret
callbackUri 文本,对应ShareSDK.xml中的RedirectUrl、RedirectUri、CallbackUrl
shareByAppClient 布尔值,shareByAppClient标识是否使用客户端分享
bypassApproval 布尔值,bypassApproval表示是否绕过审核
enable 布尔值,enable字段表示此平台是否启用
userName 文本,userName在微信小程序中使用
path 文本,path在微信小程序中使用
hostType 文本,表示服务器类型,在YouDao和Evernote中使用
withShareTicket 布尔值,分享微信小程序时,分享出去的小程序被二次打开时可以获取到更多信息,true为能获取,反之不能;仅在微信中使用
miniprogramType 数字,分享微信小程序时,表示小程序的开发状态,取值范围:0-正式,1-开发,2-体验,仅在微信中使用

配置完以上信息后同步(sync)一下代码就可以调用相关的接口了

三、添加代码

1、初始化MobSDK

如果您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但如果您设置了,请在您自己的Application类中调用:

MobSDK.init(this);

以初始化MobSDK。

添加配置后,即可调用授权、获取资料、分享等操作,如一键分享的代码: private void showShare() { OnekeyShare oks = new OnekeyShare(); //关闭sso授权 oks.disableSSOWhenAuthorize();

 // title标题,微信、QQ和QQ空间等平台使用
 oks.setTitle(getString(R.string.share));
 // titleUrl QQ和QQ空间跳转链接
 oks.setTitleUrl("http://sharesdk.cn");
 // text是分享文本,所有平台都需要这个字段
 oks.setText("我是分享文本");
 // imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
 oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片
 // url在微信、微博,Facebook等平台中使用
 oks.setUrl("http://sharesdk.cn");
 // comment是我对这条分享的评论,仅在人人网使用
 oks.setComment("我是测试评论文本");
// 启动分享GUI
oks.show(this);
}
}

四、混淆设置

ShareSDK已经做了混淆处理,再次混淆会导致不可预期的错误,请在您的混淆脚本中添加如下的配置,跳过对ShareSDK的混淆操作:

-keep class cn.sharesdk.**{*;}
-keep class com.sina.**{*;}
-keep class **.R$* {*;}
-keep class **.R{*;}
-keep class com.mob.**{*;}
-keep class m.framework.**{*;}
-dontwarn cn.sharesdk.**
-dontwarn com.sina.**
-dontwarn com.mob.**
-dontwarn **.R$*

五、可用的社交平台

任何配置在devInfo下的社交平台都是可用的,他们包括:

分类 平台名称
常用平台 SinaWeibo(新浪微博)、Wechat(微信好友)、WechatMoments(微信朋友圈)、QQ(QQ好友)、Facebook、FacebookMessenger
其它主流平台 TencentWeibo(腾讯微博)、QZone(QQ空间)、Renren(人人网)、Twitter、Douban(豆瓣)、Tumblr、GooglePlus(Google+)、Pinterest、Line、Instagram、Alipay(支付宝好友)、AlipayMoments(支付宝朋友动态)、Youtube、Meipai(美拍)
其它平台 WechatFavorite(微信收藏)、KaiXin(开心网)、Email(电子邮件)、ShortMessage(短信)、YouDao(有道云笔记)、Evernote(印象笔记)、LinkedIn(领英)、FourSquare、Flickr、Dropbox、VKontakte、Yixin(易信)、YixinMoments(易信朋友圈)、Mingdao(明道)、KakaoTalk、KakaoStory、WhatsApp、Pocket、Instapaper、Dingding(钉钉)、Telegram

六、注意事项

  1. ShareSDK默认会添加OnekeyShare库,如果您不需要这个库,可以在ShareSDK下设置“gui false”来关闭OnekeyShare
  2. MobSDK默认为ShareSDK提供最新版本的集成,如果您想锁定某个版本,可以在ShareSDK下设置“version “某个版本””来固定使用这个版本
  3. 如果使用MobSDK的模块会被其它模块依赖,请确保依赖它的模块也引入MobSDK插件

其他集成详细文档可以参考:http://wiki.mob.com/%E5%AE%8C%E6%95%B4%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3%EF%BC%88gradle%EF%BC%89/#map-5

sharesdk-for-android's People

Contributors

1019238091 avatar alexyuyxj avatar dangerousdon avatar gz-mob avatar jecelyin avatar jychenx avatar moblarry avatar yhxjw86 avatar zhangbrook avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sharesdk-for-android's Issues

为什么我qq授权拿不到openId呢?

{
"is_yellow_vip":"0",
"msg":"",
"vip":"0",
"nickname":".",
"figureurl_qq":"http://thirdqq.qlogo.cn/g?b=oidb&k=Ap98ZcpsaL17FCkmfY0ZEw&s=100",
"figureurl_qq_1":"http://thirdqq.qlogo.cn/g?b=oidb&k=Ap98ZcpsaL17FCkmfY0ZEw&s=40",
"city":"浦东新",
"constellation":"",
"gender":"男",
"figureurl_1":"http://qzapp.qlogo.cn/qzapp/1109502100/E442B1D98B8A0E012A59EF35C1B3611A/50",
"province":"上海",
"is_yellow_year_vip":"0",
"figureurl_type":"0",
"year":"1992",
"yellow_vip_level":"0",
"figureurl":"http://qzapp.qlogo.cn/qzapp/1109502100/E442B1D98B8A0E012A59EF35C1B3611A/30",
"figureurl_2":"http://qzapp.qlogo.cn/qzapp/1109502100/E442B1D98B8A0E012A59EF35C1B3611A/100",
"userTags":"",
"is_lost":0,
"figureurl_qq_2":"http://thirdqq.qlogo.cn/g?b=oidb&k=Ap98ZcpsaL17FCkmfY0ZEw&s=100",
"level":"0",
"ret":0
}

Gradle 7

如题 gradle7 插件版本如何引入

cn.sharesdk:ShareSdk-mobile-ffmpeg-min

问题:这个依赖是做啥的?导致打包apk大小异常增大,这问题是最近才出现的

依赖版本:classpath "com.mob.sdk:MobSDK:2018.0319.1724"

目前解决方法是
configurations {
all*.exclude group: 'cn.sharesdk:ShareSdk-mobile-ffmpeg-min'
}

WhatsApp 一直无法使用,

sharedSDK.xml里面信息如下

<WhatsApp Enable="false" />

build.gradle:

MobSDK {
    appKey "$mobtech_appid"
    appSecret "$mobtech_appsecret"
    ShareSDK {
        loopShare true
        devInfo {
            WhatsApp {}
            Facebook {
                appKey "$facebook_appid"
                appSecret "a42f4f3f867dc947b9ed6020c2e93558"
                callbackUri "https://mob.com"
            }
            Twitter {
                appKey "LRBM0H75rWrU9gNHvlEAA2aOy"
                appSecret "gbeWsZvA9ELJSdoBzJ5oLKX0TU09UOwrzdGfo9Tg7DjyGuMe8G"
                callbackUri "http://mob.com"
            }
            GooglePlus {
                appId "$google_appid"
                callbackUri "http://localhost"
            }
            Instagram {
                appId "ff68e3216b4f4f989121aa1c2962d058"
                appSecret "1b2e82f110264869b3505c3fe34e31a1"
                callbackUri "http://www.sharesdk.cn"
            }
        }
    }
}

Android 12

Installation failed due to: 'Failed to commit install session 570793660 with command cmd package install-commit 570793660. Error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl570793660.tmp/base.apk (at Binary XML file line #1356): cn.sharesdk.tencent.qq.ReceiveActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present'

gradle

i use gradle android, does it have any compiling statement for the inclusion?

Could not find any matches for com.mob:MobTools:+

FloatMath was deprecated in API level 22

API 23 onekeyshare compile error.
FloatMath.sqrt() is used in:

cn.sharesdk.onekeyshare.PicViewer.java
cn.sharesdk.onekeyshare.Shake2Share

FloatMath.java:
/**
* Returns the closest float approximation of the square root of the
* argument.
*
* @param value to compute sqrt of
* @return the square root of value
* @removed
*/
public static float sqrt(float value) {
return (float) Math.sqrt(value);
}

in API 23 official doc:

java.lang.Object
↳ android.util.FloatMath
This class was deprecated in API level 22.
Use Math instead.

Class Overview

Math routines similar to those found in Math.

Historically these methods were faster than the equivalent double-based Math methods. On versions of Android with a JIT they became slower and have since been re-implemented to wrap calls to Math. Math should be used in preference.

All methods were removed from the public API in version 23.

QQ分享回调没有被调用

你好,在测试过程中发现,QQ分享功能正常,但是分享的回调从来没收到过诶?微信分享的回调就能正常收到,请问怎么解决?
版本:2.6.4

Security issues / info needed

Hello,
I have a concern that is hard coding app key & app secret in sharesdk.xml file is safe?
Does it have any security issue with this? if hacker reverse engineer the apk file and app key & app secret is available to him.

Please reply.

出现DeadSystemException

依赖最新版本,在bugly上出现.DeadSystemException
classpath 'com.mob.sdk:MobSDK:+'

系统版本
Android 10,level 29
设备机型
华为 GLK AL00

main(1)

android.os.DeadSystemException
1 java.lang.RuntimeException:Unable to stop service com.mob.guard.MobGuardService@88367ca: java.lang.RuntimeException: android.os.DeadSystemException

2 android.app.ActivityThread.handleStopService(ActivityThread.java:4705)
3 ......
4 Caused by:
5 android.os.DeadSystemException:
6 android.app.ActivityThread.handleStopService(ActivityThread.java:4699)
7 android.app.ActivityThread.access$3000(ActivityThread.java:296)
8 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2264)
9 android.os.Handler.dispatchMessage(Handler.java:107)
10 android.os.Looper.loop(Looper.java:213)
11 android.app.ActivityThread.main(ActivityThread.java:8169)
12 java.lang.reflect.Method.invoke(Native Method)
13 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
14 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)

Android Facebook分享问题

Android Gradle 方式集成最新包:Facobook分享不能调用客户端分享吗?还是需要配置什么参数,在安装有客户端情况下依然是打开网页登录分享。Gradle集成问题:打包的apk没问题,打包aab上传google play分享报错清单文件找不到MobUIShell,但是清单文件配置这个又导致无法分享(apk正常,google play上传的aab无法分享)
Process: cn.kingsarts.caaa, PID: 27358
android.content.ActivityNotFoundException: Unable to find explicit activity class {cn.kingsarts.caaa/com.mob.tools.MobUIShell}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1950)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1622)
at android.app.Activity.startActivityForResult(Activity.java:4564)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
at android.app.Activity.startActivityForResult(Activity.java:4522)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
at android.app.Activity.startActivity(Activity.java:4883)
at android.app.Activity.startActivity(Activity.java:4851)
at com.mob.tools.FakeActivity.showActivity(FakeActivity.java:243)
at com.mob.tools.FakeActivity.showForResult(FakeActivity.java:222)
at com.mob.tools.FakeActivity.show(FakeActivity.java:192)
at cn.sharesdk.onekeyshare.themes.classic.ClassicTheme.showPlatformPage(ClassicTheme.java:61)
at cn.sharesdk.onekeyshare.OnekeyShareThemeImpl.show(OnekeyShareThemeImpl.java:125)
at cn.sharesdk.onekeyshare.OnekeyShare.show(OnekeyShare.java:478)
at cn.kingsarts.caaa.ui.activity.GoodsDetailsActivity$initView$2.onClick(GoodsDetailsActivity.kt:124)
at android.view.View.performClick(View.java:6877)
at android.view.View$PerformClick.run(View.java:26069)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

为什么分享要配appSecret?

比如微信分享,官方文档是不需要传入appSecret的,即便是登录,appSecret也应该放在服务端
直接把appSecret配置在客户端,是不安全的

集成问题

用这个方式classpath "com.mob.sdk:MobSDK:2018.0319.1724"集成一直报错,而且这个也不是最新的版本,真浪费时间

assets文件的xml安全问题

*_ShareSDK.xml *_在 assets 中是被外界可读的,可以配置到其他地方或者加密吗?里面有微信那些的_appId_那些信息,这有什么好的方法代替?

debug模式下有ShareSDK.xml但是release没有

如题,debug模式下有ShareSDK.xml生成在对应的文件夹下但是release打包时却没有
android studio=3.4.2
com.android.tools.build:gradle:3.2.1
distributionUrl=https://services.gradle.org/distributions/gradle-5.5.1-all.zip

QQ、微信分享成功过早回调

现在是QQ、微信成功调起,就意味着分享成功,能不能用户点击分享之后,才分享成功,如何做呢?非常感谢。

多渠道打包

多渠道打包,难道没人用吗?怎么官方一直都没支持,文档也找不到怎么搞

资源冲突

5月29日下午4点之后突然编译报错。通过git reset 到之前的代码还是如此。
提示资源冲突,截图如下:
image

Please update the Readme.md

3年过去了,Readme还是eclipse,这不太好吧。说好的做世界级一站式服务呢?最底下还看到一个错别字,将shareSDK携程sahreSDK,哇,做一站式不赚钱所以没空写写readme吗?readme是第一印象,第一印象不好,都不会有人愿意看你的内在。

shareSDK is a Back-End-Solution for mobile developing, which was born in China and really good for me,it is useful and solved much problem which i need to deal with by myself several years ago. and i also wishes that mob can update the readme document, it is as important as coding.

调用OnekeyShare时,分享网页链接问题

4W}D{PJ6T IM}N2R HZ 212
看了demo,文档、论坛,不知道怎么回事, oks.setUrl(url);设置了url但是分享到微信不是一个url链接,只有text,如果onekeyshare也需要配置ShareType,但是似乎也没有提供相应的方法设置

google版本如何不使用AndroidX?!

google版本如何不用AndroidX?! 项目依赖太多第三方依赖库,且都未对应有androidx版本,且大项目适配androidx成本较高!如何google专版的sdk,不要包括androidx内容啊

包冲突

Duplicate class com.tencent.tauth.UiError found in modules ShareSDK-QQ-Core-3.6.6.jar (cn.sharesdk:ShareSDK-QQ-Core:3.6.6) and open_sdk.jar (open_sdk.jar)

ShareSDK-QQ-Core-3.6.6.jar (cn.sharesdk:ShareSDK-QQ-Core:3.6.6) and open_sdk.jar (open_sdk.jar)这两个jar包好多文件重复。

能否把版本号写清楚?

官方文档写的是:

        // 2.注册MobSDK
        classpath "com.mob.sdk:MobSDK:2018.0319.1724"

如果我想使用3.9.2、3.9.1版应该如何指定?

微博分享报错

mob最新版
Android 10

java.lang.Throwable: errorCode: 2 errorMessage: msg is null!!!! errorDetail: error from weibo client!

gui false和version

Onekeyshare是ShareSDK的GUI界面,如果不需要,则需要添加”gui false”,因为默认是使用gui,version字段为SDK的版本号,不设置则使用最新的版本;

官方文档上写的

gui false要写在哪个位置?
最新version去哪里看呢?

Release management

@alexyuyxj take a look at https://github.com/blog/1547-release-your-software, GitHub now has a greatly improve release feature.

To view existing releases: https://github.com/ShareSDKPlatform/ShareSDK-for-Android/releases
To release a new release: https://github.com/ShareSDKPlatform/ShareSDK-for-Android/releases/new
To edit an existing release: https://github.com/ShareSDKPlatform/ShareSDK-for-Android/releases/new?tag=V2.1.2

I would suggest that we include change log (includes bug fix(es), new feature(s) and other now in both Chinese and English, w/ links to corresponding blog posts or wherever contains more information (such as blogs about new features)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.